【发布时间】:2017-09-06 19:37:21
【问题描述】:
我有一个包含大约 100 列的表,如果列的组合是唯一的,则只需要添加一个新行。问题是我需要检查大约 50 列,因此一个简单的 where 子句在处理大量数据时可能会非常慢。
是否建议事先在 C# 中创建这些字段的所有值的唯一哈希,并将其存储在表的新列中并基于此进行比较?
【问题讨论】:
-
等式检查比散列更快,尤其是在列被索引的情况下。
-
我同意。为什么不是一个大的
WHERE col1 = :val1 AND col2 = :val2等? -
那么构建一个 50 列的 where 子句比较好?
-
@NickReeve 为什么你必须首先这样做?除了检查每一列之外,您如何最终无法识别重复项?数据中是否没有键或标识符?
-
可能会更好。至少您不必更改您的数据库架构,保持散列是最新的,并计算超过 50 个值的散列来进行比较。但您可能还有其他限制。
标签: c# sql-server hash unique