2015-05-08 2 views
0

У меня есть широкий вопрос относительно множественных объединений в teradata.Что на самом деле происходит с несколькими заявлениями о соединении?

Например, у меня: table1, table2, table3, table4. Я хочу сделать INNER JOIN для всех из них

Итак:

SELECT a.*, b.*, c.*, d.* 
FROM table1 a 
JOIN table2 b ON a.acct_ID = b.acct_ID 
JOIN table3 c ON a.acct_ID = c.acct_ID 
JOIN table4 d ON a.acct_ID = d.acct_ID 

Так что здесь происходит то, что каждый раз, когда объединение происходит, временная таблица создается в этой последовательности (((table 1+ table 2)+table 3)+table 4)?

Должен ли оператор on быть b.acct_ID = c.acct_ID и c.acct_ID = d.acct_ID для того, чтобы оператор был эффективным, или это не влияет на временную таблицу?

+3

оставьте это до DB Engine. Если вы не получаете желаемую производительность, рассмотрите оптимизацию. Если вы попытаетесь оптимизировать, вы знаете, что у вас есть проблема. Это похоже на попытку попасть в движущуюся целевую задачу ... насколько хорошо это хорошо ... Теперь, если вы ЗНАЕТ, производительность плохая, посмотрите на планы выполнения и выясните, что лучше. – xQbert

ответ

1

Если вы подключаете несколько таблиц, порядок соединений зависит от оптимизатора, план запросов разрабатывается на основе знаний (количество строк, собранная статистика, уникальность). Только два набора данных могут быть объединены за один шаг, поэтому оптимизатор разделит несколько соединений на двоичные отношения и попытается найти наименее дорогой план. Там больше деталей в руководствах Teradata: planning n-way joins (и предыдущие и последующие страницы)

Впечатляет являются быстро растущее число возможных способов для оптимизации соединений, например, 18000000000 другой способ, чтобы сделать 10-таблицу присоединиться: possible join orders

В случае Teradata результат объединения будет храниться в так называемой «катушки» (кэшированных, если это не слишком большой).

Для просмотра фактического плана вы можете «Объяснить» запрос, добавив Explain перед запросом или нажав F6 (в SQL Assistant и TD Studio), это возвращает довольно длинное текстовое представление плана.

0

Если вы хотите знать, что произойдет во время вашего выбора, отметьте execution plan.

Смежные вопросы