Oracle Developer👨🏻‍💻
3.17K subscribers
583 photos
63 videos
2 files
469 links
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и многое другое...

Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
Виды соединения таблиц

Представьте запрос типа:
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