Любой способ сжать comluns в уникальное более короткое значение для сравнения строк данных

1

Я думаю, что сделать обновление базы данных немного проще.

В данном случае: нужно сравнить все столбцы от DB A до DB B от PK, чтобы знать, нужно ли обновлять эту строку.

Простым способом является подключение всех столбцов с разделителями, а затем сравнение. НАПРИМЕР:

string row_A=column1+column2+.....column20;
string row_B=column1+column2+.....column20;
if(row_A!=row_B)
{...}

Но мне интересно, есть ли лучший способ, как вычислить эти столбцы в уникальное значение, что-то вроде хэша или что-то еще, тогда я могу сохранить эти значения в таблице.

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

Тогда мне просто нужно сравнить эти уникальные числа или строки.

  • 1
    Вы можете использовать контрольную сумму для чего-то вроде этого. Сделал бы это немного меньше, набрав.
  • 2
    Хеширование не надежно. Подумайте о конкатенации: J + ames - это то же самое, что и Jam + es . Хеширование может иметь такой же вид столкновения. Если у вас проблемы с производительностью, подумайте над улучшением индексации для поддержки сравнения. Если у вас нет проблем с производительностью, оптимизируйте, когда это необходимо.
Показать ещё 1 комментарий
Теги:
sql-server
hash
hashmap

1 ответ

0

Если у вас были отметки времени, когда эти строки, где последнее обновление, или номер версии строки, обычно один из них реализуется в таблицах, которые необходимо синхронизировать и обновлять/увеличивать каждый раз при обновлении.

В противном случае, если нет, хеш-функция (хэш всех столбцов отдельно), то хэш этого, будет вашим вторым лучшим, если сравнивать каждое значение не является жизнеспособным.

PS Хеширование никогда не гарантирует, что нет столкновения, но в зависимости от того, насколько велик ваш набор данных, это маловероятно.

  • 0
    да сэр. у нас есть время вставлено и обновлено, и ... что-то еще .. даже, что все еще нужно полное сравнение ...
  • 0
    Вы не можете проверить время обновления / вставки? Если они не совпадают, это означает, что последний изменился. То есть, если оба раза в обеих базах данных одинаковы, если не изменены.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню