我有一个复杂的查询,它使用了很多二进制校验和函数,当我用一些测试数据对两个不同的记录进行测试时,它实际上返回了相同的校验和值。请在下面找到我使用的测试数据
SELECT BINARY_CHECKSUM(16 ,'EP30461105',1) AS BinaryCheckSumEx UNION ALL
SELECT BINARY_CHECKSUM(21 ,'EP30461155',1) AS BinaryCheckSumEx
现在我正在尝试将 HASHBYTES 函数与“MD5”算法一起使用,我可以确定获得唯一记录,但现在我担心的是在当前查询中我使用“校验和”值加入我的“合并”语句寻找新的记录。由于“HashBytes”返回给我 Varbinary 数据类型,当我用“HashByte”字段替换连接条件时,我可以预期多少性能开销。
SELECT HASHBYTES('MD5', CONCAT(Col1,Col2,Col3,Col4,..))
此外,我需要为多个列创建散列,在这种情况下,我需要一个额外的 Concat 函数,这会对我的性能产生额外的开销。