CHAR(64)或BINARY(32)在SQL SERVER中存储SHA256哈希

kro*_*olk 5 sql sql-server

我在讨论在SQL Server中存储SHA256哈希时要使用的数据类型.它应该是CHAR(64)还是BINARY(32)......该列将是唯一聚簇索引的一部分.我知道在这一点上我可能会分裂,但是我想在第一次就这样做,我知道有时原始数据类型更快,而其他时候更新的更奇特的类型表现更好.(是的,我知道char(64)并不是全新的,但它比字节存储更新)

我环顾四周,在搜索等方面找不到关于其他人与其他人的表现的信息.

Die*_*ego -3

您是否知道通过使用 CHAR(64),即使您的密钥是“A”,每行也将占用 64 位?我不打算讨论您使用字符串作为聚集索引的事实,我只是假设您有充分的理由,但是使用 CHAR 而不是 VARCHAR?您打算更新该值吗?因为这是我认为使用 char 而不是 varchar 的唯一原因

  • SHA256 哈希值始终占用 64 个字符。因此 CHAR 与 VARCHAR。从上面的评论来看,我相信 BINARY(32) 是正确的选择。我使用该哈希的原因是因为我有一些需要唯一的文本( len 中的 2048 ),并且我可以比字符串表示更快地比较哈希,并且考虑到 SHA256 冲突的可能性很低,我得到了很好的结果性能提升。该表的事务性不强,或者不会在初始数据填充后出现,但会经常被读取。感谢您的想法,因此请随意回应/批评。 (3认同)