sql数据库-哈希多个主键

yjghlzjz  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(235)

我想问一下,在哪些情况下,散列sql表的主键(如果有多个主键)是一个好的选择(将主键列添加为普通列,并添加一个主键列(在所有主键之上包含哈希)?性能有什么提高吗?或者一个好的sql实现能自己做到吗?
如果这导致性能改进,将改进哪些指令?
t型

q35jwt9p

q35jwt9p1#

首先,并不是所有的数据库都支持哈希索引,所以您的问题非常特定于数据库。我注意到这一点是因为您的问题没有指定数据库。
第二,即使在有哈希索引的数据库中,主键也可能不支持哈希索引。
数据库中使用的标准b树索引对于主键来说已经足够了。散列索引在某些重要方面不同于b-树。但值得注意的是,哈希索引只支持相等操作,而不支持不相等操作。
哈希索引的查找时间接近o(1)(但不要忘记哈希表可能会发生冲突,可能需要溢出到磁盘上)。对于b树来说,这比o(logn)时间稍微好一点——但是对数非常小,即使在数百万或数十亿行的数据上也是如此。
实际上,我看不出有什么强有力的理由将哈希索引用作主键,即使数据库支持它。如果我要创建一个合理的用例,我会从一个大规模并行分布式数据库开始,在这个数据库中主键也将用于分发数据。

相关问题