SQL Server:什么是存储MD5哈希的最佳数据类型?

时间:2018-04-10 19:18:11

标签: sql-server hash md5 uniqueidentifier binary-data

我需要在SQL Server中存储由哈希唯一标识的项目列表。

在C#中,我将哈希计算为项目ID(NULLIF)的连接的MD5哈希值。

目前,我的哈希在C#中具有数据类型Guid,在SQL Server中具有byte[]

这是DDL:

binary(16)

但也许我会更好:

CREATE TABLE [dbo].[ItemSet](
    [GUID] [uniqueidentifier] NOT NULL,
    [HashCode] [binary](16) NOT NULL,
    [Item1GUID] [uniqueidentifier] NOT NULL,
    [Item2GUID] [uniqueidentifier] NOT NULL,
    ...
    [UtcModified] [datetime] NULL,
 CONSTRAINT [ItemSet_PK] PRIMARY KEY CLUSTERED 
(
    [GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

[HashCode] [uniqueidentifer] NOT NULL, 也是16个字节,也许SQL Server为uniqueidentifier提供uniqueidentifier以上的性能或其他优势?

在C#中,相应的数据类型为binary(16),显然从MD5哈希计算时会有一个特殊的Guid表单:

Type 3 Guid

其中nnnnnnnn-nnnn-3nnn-xnnn-nnnnnnnnnnnn 表示3Type 3字节被屏蔽为x

但我不清楚如何创建这样的10xx。而对于我的目的,它似乎是人造的和不必使用特殊格式的数据类型。

在C#和T-SQL中使用MD5哈希是否有任何最佳/可接受的标准?

0 个答案:

没有答案