使用校验和作为主键时可以有多少行

  • 本文关键字:多少 校验和 sql sql-server
  • 更新时间 :
  • 英文 :


使用校验和作为主键时可以有多少行?

CHECKSUM 返回 int ,因此理论上你可以有 2^32 = 4294967296 个唯一值。但在现实生活中,你永远不会达到这个数字,因为校验和可以为不同的参数返回相同的结果。因此,您永远不应该将校验和结果用作PK。

不要使用校验和作为主键,因为它们不是唯一的。创建一个普通的自动递增 PK,一个校验和列,并在需要时向其添加索引。

原因如下:哈希值容易发生冲突。冲突是指 2 个不同的输入产生相同的哈希值。这不太可能发生,但很有可能。例如,文本为"plumless"的文件的CRC32与文本"buckeroo"完全相同。"编码"与"gnu"也是如此。

当您获得大约 250.000 行时,冲突的机会(因此重复 PK)对您来说会变得相当高。

来源

  • http://preshing.com/20110504/hash-collision-probabilities/
  • http://www.lammertbies.nl/comm/info/crc-calculation.html
  • https://softwareengineering.stackexchange.com/questions/49550/which-hashing-algorithm-is-best-for-uniqueness-and-speed/145633#145633

最新更新