首页 > 解决方案 > 创建一个哈希键作为唯一键

问题描述

我有一个非常大的表,其中包含重复的名称和地址信息。该表提供一个执行任务并将结果附加回表的进程。我想通过在名称和地址信息上创建一个哈希键来减少输入这个过程的数量。这样我可以为每个哈希键提供一条记录,从而减少 75% 的输入。而且我需要这个密钥随着时间的推移保持不变。

但是,由于此哈希键将作为我加入结果表的键,因此我需要它是唯一的。我可以将哈希键创建为持久列,并给它一个唯一的约束,但我担心碰撞的可能性很小。如果两个不同的名称和地址字符串可能产生相同的哈希输出,我仍然需要它们的唯一键。

即使这种情况不太可能发生,我也不高兴知道如果发生了,我就没有计划。

我还考虑过使用表的代理 ID,并使用 MIN(surrogateID) 分配一组名称和地址中的每条记录。但是,如果删除了与给定组的 MIN(surrogateID) 对应的记录,那么现在我的 ID 已更改。

我可以创建一个包含不同名称和地址的查找表,并为每个人提供一个简单的整数 ID。但我宁愿避免存储成本。

还有其他我可能不会考虑的选择吗?

标签: sql-serversurrogate-keyhashbytes

解决方案


推荐阅读