我要创建:
- 用于存储ID和唯一文本值(预期大)
- 一个存储过程,它将有一个文本值作为输入参数(它将检查上表中是否存在该值,并返回相应的ID(如果存在),或者插入新记录(如果不存在),并且还返回新ID)
我想使用文本的哈希值优化文本值的搜索,并在上面创建索引。因此,在搜索过程中,我希望使用非聚集索引(而不是聚集索引)。
我决定将HASHBYTES与SHA2_256
一起使用,我想知道如果我将哈希值存储为BINARY(32)
或NVARCHAR(16)
,会有什么区别/好处吗?
由于二进制数据不是文本,因此无法合理地将哈希值存储为字符。各种文本处理和比较函数解释这些字符。例如,尾部空白有时会被忽略,从而导致不正确的结果。
由于您有32个完全随机的非结构化字节来存储binary(32)
是最自然的格式,也是最快的格式。