簡體   English   中英

SQL 數據庫 - Hash 多個主鍵

[英]SQL database - Hash multiple primary keys

我想問你在什么情況下,hash SQL 表的主鍵(如果你有多個)是一個不錯的選擇。 (將主鍵列添加為普通列並添加單個主鍵列,在所有主鍵之上包含一個 hash)? 性能是否有任何改進,或者一個好的 SQL 實現可以自己做到嗎?

如果這會導致性能改進,哪些指令會得到改進?

首先,並非所有數據庫都支持 hash 索引,因此您的問題是高度特定於數據庫的。 我注意到這一點是因為您的問題沒有指定數據庫。

其次,即使在支持的數據庫中,主鍵也可能不支持 hash 索引。

數據庫中使用的標准 B-Tree 索引對於主鍵來說已經足夠了。 hash 索引在某些重要方面與 B 樹不同。 但值得注意的是,hash 索引只支持相等運算,不支持不等式。

hash 索引更接近於 O(1) 查找時間(但不要忘記 hash 表可能會發生沖突並且可能需要溢出到磁盤上)。 這比 B-Tree 的 O(log n) 時間稍微好一點——但對數非常小,即使在數百萬或數十億行數據上也是如此。

在實踐中,即使數據庫支持它,我也沒有看到任何強烈的理由使用哈希索引作為主鍵。 如果我要創建一個合理的用例,我將從一個大規模並行分布式數據庫開始,其中主鍵也將用於分發數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM