Я очень новичок в vertica db и, следовательно, ищу различные эффективные способы сравнения двух таблиц строк среднего размера 500ml-800ml в vertica. У меня есть процесс, который получает данные из представления vertica и выгружает на сервер SQL для последующего слияния с финальной таблицей на сервере sql. для нескольких больших таблиц в день сбрасывается около 3 млрд строк. Вместо сброса всех данных я хочу сделать ежедневный снимок и сравнить его со снимком предыдущих дней только на стороне vertica, а затем pu sh изменил только строки на SQL SEREVER.
скажем, предыдущий снимок хранится в таблице A, сегодняшний снимок хранится в таблице B. PK в обеих таблицах - это столбец с именем OrderId.
Самый простой способ, которым я могу придумать, это
Select * from tableB
Where OrderId NOT IN (
SELECT * from tableA
INTERSECT
SELECT * from tbleB
)
Итак, мои вопросы:
- Есть ли другие / лучший вариант в vertica, чтобы получить только измененные строки между двумя таблицами? Или я должен даже подумать о том, чтобы сделать это сравнение на стороне vertica?
- Сколько должно пройти такое сравнение?
- Что следует учитывать для повышения производительности такого запроса?