C# 在插入SQL Server之前,请检查大列列表的唯一组合
我有一个大约有100列的表,如果列的组合是唯一的,只需要添加一个新行。问题是我需要检查大约50列,因此在大量数据中,一个简单的where子句可能会非常慢C# 在插入SQL Server之前,请检查大列列表的唯一组合,c#,sql-server,hash,unique,C#,Sql Server,Hash,Unique,我有一个大约有100列的表,如果列的组合是唯一的,只需要添加一个新行。问题是我需要检查大约50列,因此在大量数据中,一个简单的where子句可能会非常慢 是否建议预先在C#中创建这些字段的所有值的唯一哈希,并将其存储在表中的新列中,并基于此进行比较?您可以使用此链接()要对要插入的行和表中已存在的行进行散列,并使用此校验和验证唯一性,这听起来是实现合并的好地方(如果您也在更新匹配记录)。以下是MSDN中的文章: 相等检查比散列快,尤其是在列被索引的情况下。我同意。为什么没有一个大的WHERE c
是否建议预先在C#中创建这些字段的所有值的唯一哈希,并将其存储在表中的新列中,并基于此进行比较?您可以使用此链接()要对要插入的行和表中已存在的行进行散列,并使用此校验和验证唯一性,这听起来是实现合并的好地方(如果您也在更新匹配记录)。以下是MSDN中的文章:
相等检查比散列快,尤其是在列被索引的情况下。我同意。为什么没有一个大的
WHERE col1=:val1和col2=:val2
等等?那么构建一个包含50列的WHERE子句更好?@NickReeve为什么首先必须这样做?除了检查每一列之外,你怎么没有办法识别重复项?数据中没有键或标识符吗?这样可能更好。至少,您不必更改DB模式,保持哈希值为最新值,并计算50个值的哈希值来进行比较。但是你可能有其他的限制。这应该是一个评论。合并无论如何都没有帮助。您仍然需要比较所有列