我想在MSSQL 2016中有效地存储此值:
6d017ed2a48846f0ac025dd8603902c7
即固定长度,从0到f,十六进制,对吗? Char(32)似乎太昂贵了。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
在几乎所有情况下,您都不应该将其存储为字符串。 SQL Server具有binary
and varbinary
types。
此字符串表示一个16字节的二进制值。如果预期大小是固定的,则可以将其存储为binary(16)
。如果大小更改,则可以将其存储为varbinary(N)
,其中N
是最大预期大小。
请勿使用varbinary(max)
,它用于存储BLOB,并且具有特殊的存储和索引特性。
在少数情况下,存储字符串本身是有意义的,例如,如果它是API中使用的哈希字符串,还是要向人类展示。在这种情况下,数据将始终以字符串形式出现,并且始终必须转换为要使用的字符串。在这种情况下,不断转换的成本可能会超过存储收益。