Я использую синтаксис MERGE
для всей таблицы, используя две таблицы: исходную и целевую. Задача состоит в том, чтобы обновить старые данные в целевом объекте и добавить новые данные из источника в выбранное время (есть проверка updated_time). Проблема в том, что я не хочу, чтобы объединение сканировало целые строки и фокусировалось только на том, что я хочу объединить.
Поэтому я пытаюсь использовать этот запрос:
target trg
USING
source src
ON
trg.id = src.id
AND trg.c_ctr = src.c_ctr
AND DATE(trg.pt) = DATE(src.pt)
AND DATE(trg.pt) >= "2019-12-12
WHEN
MATCHED AND DATE(src.pt) >= "2019-12-12 THEN
UPDATE
SET (...)
WHEN
NOT MATCHED AND DATE(src.pt) >= "2019-12-12" THEN
INSERT
(...) VALUES (...)
Когда я Попробуйте этот запрос ... Кажется, он потребляет "довольно низкие" данные (около 140 МБ), потому что я хочу проверить с 25 дней go. Я не пробовал этот запрос в таблицах большого размера. Это то, что я хочу спросить: если я дал какое-то условие для барьера сканирования, будет ли операция MERGE продолжать сканирование всей таблицы или только нескольких строк, охватываемых разделом? Любая помощь приветствуется.