Как выполнить объединение двух таблиц слева при их обновлении - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть две таблицы: tb1 и tb2, я выполняю левое соединение для создания новой таблицы с именем tb3 из этих двух таблиц. время от времени tb1 и tb2 обновляются новыми строками и хотят выполнить одно и то же левое соединение для создания обновленной таблицы tb3. Могу ли я выполнить эту задачу без записи новых левых объединений при каждом обновлении таблиц? какое лучшее решение для такого рода задач?

1 Ответ

0 голосов
/ 19 февраля 2020

Использовать представление:

create view v_tb3 as 
    select . . .
    from table1 t1 left join
         table2 t2
         on . . .
    . . .;

Это будет запускать запрос при каждом доступе к представлению. Это обеспечит актуальность данных.

Если вы действительно хотите сохранить данные в виде таблицы (поэтому их не нужно пересчитывать), тогда вы можете использовать материализованное представление :

create materialized view mv_tb3 as 
    select . . .
    from table1 t1 left join
         table2 t2
         on . . .
    . . .;

Однако существуют предостережения относительно актуальности данных. А поддержание вида требует накладных расходов. A left join обычно не особенно дорог, поэтому я бы рекомендовал простой вид.

...