Наиболее эффективный способ объединения таблицы в другую таблицу с двумя отдельными критериями соединения для части данных - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть 2 таблицы (Table1 и Table2), к которым я хочу присоединиться, однако критерии объединения различаются в зависимости от данных в столбце Country Table1.

Для всех записей со значением 'UK' в столбце Country, к которым я хотел бы присоединиться JoinField1, JoinField2 и JoinField3.

Для всех записей со значением 'USA' в столбце Country, к которым я хотел бы присоединиться JoinField2, JoinField3 и JoinField4.

В настоящий момент я просто присоединяюсь Table2 дважды к Table1 с различными критериями соединения. Однако я бы хотел этого избежать, поскольку Table2 содержит несколько сотен миллионов строк данных, и в моем запросе возникают проблемы с запуском.

Есть ли более эффективный способ сделать это объединение? Обратите внимание, что я использую DB2 SQL и не могу использовать функции в запросе.

enter image description here

1 Ответ

0 голосов
/ 12 апреля 2019

Вы можете выразить это как:

select . . .
from table2 t2 join
     table1 t1
     on t2.country = t1.country and
        t2.Joinfield2 = t1.Joinfield2 and
        t2.Joinfield3 = t1.Joinfield3 and
        ( (t2.country = 'UK' and t2.Joinfield1 = t1.Joinfield1) or
          (t2.country = 'USA' and t2.Joinfield4 = t1.Joinfield4) 
        );

Я не уверен, что это улучшит производительность, потому что or может быть убийцей производительности.Но индексы на (country, joinfield2, joinfield3, joinfield1, joinfield4) могут помочь.

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