Принимая во внимание данные, короткого пути нет. На самом деле это единственный твердый способ сделать это. Одна вещь, с которой вам, возможно, нужно быть осторожным, это правильное сравнение значений NULL в столбцах, способных к NULL. Запрос с OR
имеет тенденцию быть медленным, не говоря уже о 30 столбцах.
Также ваш запрос не будет включать записи в table_b
, которые не имеют соответствующей записи в table_a
. Поэтому в идеале вы должны использовать FULL JOIN
.
Если вам нужно часто выполнять эту операцию, вы можете ввести какой-то дополнительный столбец данных, который обновляется всегда, когда что-либо в строке изменяется. Это может быть так же просто, как столбец TIMESTAMP
, который обновляется с помощью триггеров UPDATE/INSERT
. Затем, когда вы сравниваете, вы даже знаете, какая запись более свежая. Но опять же, это не пуленепробиваемое решение.