Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在插入SQL Server之前,请检查大列列表的唯一组合_C#_Sql Server_Hash_Unique - Fatal编程技术网

C# 在插入SQL Server之前,请检查大列列表的唯一组合

C# 在插入SQL Server之前,请检查大列列表的唯一组合,c#,sql-server,hash,unique,C#,Sql Server,Hash,Unique,我有一个大约有100列的表,如果列的组合是唯一的,只需要添加一个新行。问题是我需要检查大约50列,因此在大量数据中,一个简单的where子句可能会非常慢 是否建议预先在C#中创建这些字段的所有值的唯一哈希,并将其存储在表中的新列中,并基于此进行比较?您可以使用此链接()要对要插入的行和表中已存在的行进行散列,并使用此校验和验证唯一性,这听起来是实现合并的好地方(如果您也在更新匹配记录)。以下是MSDN中的文章: 相等检查比散列快,尤其是在列被索引的情况下。我同意。为什么没有一个大的WHERE c

我有一个大约有100列的表,如果列的组合是唯一的,只需要添加一个新行。问题是我需要检查大约50列,因此在大量数据中,一个简单的where子句可能会非常慢


是否建议预先在C#中创建这些字段的所有值的唯一哈希,并将其存储在表中的新列中,并基于此进行比较?

您可以使用此链接()要对要插入的行和表中已存在的行进行散列,并使用此校验和验证唯一性,这听起来是实现合并的好地方(如果您也在更新匹配记录)。以下是MSDN中的文章:


相等检查比散列快,尤其是在列被索引的情况下。我同意。为什么没有一个大的
WHERE col1=:val1和col2=:val2
等等?那么构建一个包含50列的WHERE子句更好?@NickReeve为什么首先必须这样做?除了检查每一列之外,你怎么没有办法识别重复项?数据中没有键或标识符吗?这样可能更好。至少,您不必更改DB模式,保持哈希值为最新值,并计算50个值的哈希值来进行比较。但是你可能有其他的限制。这应该是一个评论。合并无论如何都没有帮助。您仍然需要比较所有列