【发布时间】:2013-09-11 04:02:06
【问题描述】:
我正在讨论在 SQL Server 中存储 SHA256 哈希时使用哪种数据类型。它应该是 CHAR(64) 还是 BINARY(32) ... 该列将是唯一聚集索引的一部分。我知道此时我可能会感到头疼,但是我想第一次就做到这一点,而且我知道有时原始数据类型更快,而其他时候更新更奇特的类型表现更好。 (是的,我知道 char(64) 并不是那么新,但它比字节存储更新)
我环顾四周,在搜索等方面找不到任何关于一个与另一个的性能的信息。
【问题讨论】:
-
我会使用 binary(32) 只是因为我没有理由支持 char(64) - 我认为后者的唯一原因是所有工作几乎完全通过CLI(但是转换函数无论如何都可以用于人机交互)。以编程方式,处理原始数据同样容易,甚至更容易。它还导致空间稍微减少(-> 索引变得如此之小/比较速度如此之快),并且由于我不能为 char(64) 争论,所以不妨只享受免费的好处。
-
据我所见 binary(32) 在 char(64) 上有一点优势,我只会在 SQL 端使用该列。这里提到的等式的另一面是代码的可用性,但是我宁愿获得一点优势,如果真的存在的话,就吃掉额外的开发复杂性。所以.. 我将使用 BINARY(32)。 stackoverflow.com/a/16993150/128795
标签: sql sql-server