Виды соединения таблиц
Представьте запрос типа:
Существуют три основных типа соединения:
1. Nested loops (цикл в цикле).
2. Merge join (соединение слиянием).
3. Hash join (hash-соединение).
Каждый тип соединения подходит для своих ситуаций. Зависит от структур данных, количества выбираемых данных и других факторов.
Чаще всего, особенно в OLTP-системах, подходит nested-loops.
СУБД выбираем автоматически какой тип соединения применить. Иногда оптимизатор ошибается. При помощи хинтов, мы можем подсказать, какой тип выбрать.
Важно не путать соединение на логическом уровне (left join, cross join, join и др.) c физическим уровнем.
В следующем посте, расскажу про соединение через nested loops.
#оптимизация #nestedloops #hashjoin #mergejoin
Представьте запрос типа:
select *Задумывались ли вы, как СУБД будет их соединять?
from T1
join T2 on T2.t1_id = T1.id;
Существуют три основных типа соединения:
1. Nested loops (цикл в цикле).
2. Merge join (соединение слиянием).
3. Hash join (hash-соединение).
Каждый тип соединения подходит для своих ситуаций. Зависит от структур данных, количества выбираемых данных и других факторов.
Чаще всего, особенно в OLTP-системах, подходит nested-loops.
СУБД выбираем автоматически какой тип соединения применить. Иногда оптимизатор ошибается. При помощи хинтов, мы можем подсказать, какой тип выбрать.
Важно не путать соединение на логическом уровне (left join, cross join, join и др.) c физическим уровнем.
В следующем посте, расскажу про соединение через nested loops.
#оптимизация #nestedloops #hashjoin #mergejoin