【问题标题】:Using Multi Column Unique Indexes vs Single Hashed Column使用多列唯一索引与单哈希列
【发布时间】:2015-12-01 20:52:28
【问题描述】:

我有一个表,我需要为多个列提供唯一约束。但是,除了创建多列唯一索引之外,我还可以基于所有必需字段的散列引入一个额外的列。那么哪一个在数据库性能方面会更有效呢?

MySQL suggests 哈希列方法,但我找不到任何有关 SqlServer 的信息。

【问题讨论】:

  • 我怀疑在 SQL Server 中,如果您只谈论 unique constraint 而不是 index,性能差异将是微不足道的。
  • 不,不是。我关心的是是否在多个列或单个额外定义的列上定义唯一约束,是否值得付出努力。

标签: sql-server database-design database-performance


【解决方案1】:

您提供的链接说明:

如果此列很短、相当独特且已编入索引,则它可能比许多列上的“宽”索引要快。

因此,性能改进确实依赖于索引散列比组合的多列小很多。考虑到 MD5 是 16 个字节,这很可能不是这种情况。我会考虑多列索引的平均索引键有多宽,老实说,我可能不会理会哈希。

如果您愿意,可以用这两种方法对您的系统进行基准测试。如果潜在的好处没有诱使您尝试这样做,我也不会打扰。

我更频繁地使用该技术进行更改检测,其中检查表行的 100 个单独列中的更改比比较两个哈希值要耗费更多的计算量。

【讨论】:

    猜你喜欢
    • 2019-01-28
    • 2018-07-27
    • 2011-03-15
    • 2020-05-06
    • 1970-01-01
    • 2011-02-15
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多