将 HASHBYTES 输出存储在 NVARCHAR 与 BYTES 中
Storing HASHBYTES output in NVARCHAR vs BYTES
我要创建:
- a table 用于存储 ID 和唯一文本值(预计
大)
- 一个将文本值作为输入参数的存储过程
(它将检查值是否存在于上面的 table 和 return
如果存在则对应ID,如果不存在则插入一条新记录
return 新ID)
我想使用文本的哈希值并在其上创建索引来优化文本值的搜索。因此,在搜索过程中,我希望使用非聚集索引(而不是聚集索引)。
我决定将 HASHBYTES 与 SHA2_256
一起使用,我想知道如果我将哈希值存储为 BINARY(32)
或 [=12 是否有任何 differences/benefits =]?
您不能合理地将哈希值存储为字符,因为二进制数据不是文本。各种文本处理和比较函数解释这些字符。例如,尾随空格有时会被忽略,从而导致不正确的结果。
因为你有 32 个完全随机的非结构化字节来存储 binary(32)
是最自然的格式,也是最快的格式。
我要创建:
- a table 用于存储 ID 和唯一文本值(预计 大)
- 一个将文本值作为输入参数的存储过程 (它将检查值是否存在于上面的 table 和 return 如果存在则对应ID,如果不存在则插入一条新记录 return 新ID)
我想使用文本的哈希值并在其上创建索引来优化文本值的搜索。因此,在搜索过程中,我希望使用非聚集索引(而不是聚集索引)。
我决定将 HASHBYTES 与 SHA2_256
一起使用,我想知道如果我将哈希值存储为 BINARY(32)
或 [=12 是否有任何 differences/benefits =]?
您不能合理地将哈希值存储为字符,因为二进制数据不是文本。各种文本处理和比较函数解释这些字符。例如,尾随空格有时会被忽略,从而导致不正确的结果。
因为你有 32 个完全随机的非结构化字节来存储 binary(32)
是最自然的格式,也是最快的格式。