在NVARCHAR和BYTES中存储HASHBYTES输出

时间:2015-03-30 08:59:13

标签: sql tsql sql-server-2012 hashbytes

我要创建:

  • 用于存储ID和唯一文本值的表(预期为 很大)
  • 一个存储过程,它将文本值作为输入参数 (它将检查上表中是否存在该值并返回 相应的ID(如果存在),或者插入新记录(如果不存在) 也返回新的ID)

我想使用文本的哈希值优化文本值的搜索,并在其上创建索引。因此,在搜索期间,我希望使用非聚集索引(而不是聚簇索引)。

我决定将HASHBYTESSHA2_256一起使用,我想知道如果我将哈希值存储为BINARY(32)NVARCHAR(16),是否有任何差异/好处?< / p>

1 个答案:

答案 0 :(得分:3)

您无法合理地将哈希值存储为字符,因为二进制数据不是文本。各种文本处理和比较功能解释这些字符。例如,有时会忽略尾随空格,从而导致错误的结果。

由于你有32个完全随机的非结构化字节来存储binary(32)是最自然的格式,它是最快的格式。

相关问题