C# 将ComLUN压缩为唯一较短值以进行数据行比较的任何方法

C# 将ComLUN压缩为唯一较短值以进行数据行比较的任何方法,c#,sql,sql-server,hash,hashmap,C#,Sql,Sql Server,Hash,Hashmap,我正在考虑让数据库更新更容易一点 就本案而言: 需要按主键比较从DB A到DB B的所有列,以了解此行是否需要更新 简单的方法是用分隔符连接所有列,然后进行比较。 例如: 但我想知道有没有更好的方法,比如把这些列计算成一个唯一的值, 类似于散列或其他东西,然后我可以将这些值保存到表中 uniqueValue_A=makeUniqueValue(column1+column2+.....column20); uniqueValue_B=makeUniqueValue(column1+column2

我正在考虑让数据库更新更容易一点

就本案而言: 需要按主键比较从DB A到DB B的所有列,以了解此行是否需要更新

简单的方法是用分隔符连接所有列,然后进行比较。 例如:

但我想知道有没有更好的方法,比如把这些列计算成一个唯一的值, 类似于散列或其他东西,然后我可以将这些值保存到表中

uniqueValue_A=makeUniqueValue(column1+column2+.....column20);
uniqueValue_B=makeUniqueValue(column1+column2+.....column20);
if(uniqueValue_A!=uniqueValue_B)
{...}

然后我只需要比较这些唯一的数字或字符串。

如果您有这些行上次更新的时间戳或行版本号,通常其中一个是在需要“同步”的表上实现的,并且在每次更新时更新/增加

否则,如果不能比较每个值,则使用散列函数(分别对所有列进行散列),然后再使用散列函数的散列,这将是次优选择


附加说明:哈希法永远不能保证不会发生冲突,但这取决于数据集的大小。

您可以使用校验和进行类似操作。这样会减少输入量。哈希不可靠。考虑连接:
J
+
ames
Jam
+
es
相同。散列可以有相同类型的冲突。如果存在性能问题,请考虑改进索引以支持比较。如果没有性能问题,请在需要时进行优化。请理解,数据太大,无法对所有列进行索引。只是问问更好的主意,先生。我们已经插入并更新了时间,并且。。。还有一些……即使是这样,仍然需要进行完整的比较……您不能对照更新/插入的时间进行检查吗?如果不匹配,则意味着后一个发生了变化。也就是说,如果两个数据库中的两个时间都相同,除非更改。这就是我们通常所做的,但有时该机制无法完美工作。
uniqueValue_A=makeUniqueValue(column1+column2+.....column20);
uniqueValue_B=makeUniqueValue(column1+column2+.....column20);
if(uniqueValue_A!=uniqueValue_B)
{...}