(Oracle) Улучшает ли добавление фильтра в мастер-таблицу производительность условия левого соединения между master-detail? - PullRequest
0 голосов
/ 04 января 2019

Я хотел бы знать, если добавление условия в условии левого соединения, которое фильтрует записи в основной таблице, повышает производительность левого соединения между таблицами Master-Detail.

например. У меня есть мастер-таблица MT (ID, TYPE) и таблица детализации DT (ID, FK, NAME), левое соединение будет записано так:

select MT.ID, DT.NAME
from MT left join
     DT
     on MT.ID = DT.FK

Если между результатами левого объединения мне нужна только информация о записях определенного типа, скажем, MT.TYPE = '01 ', улучшает ли это добавление этого условия в предложении левого соединения?

select MT.ID, DT.NAME
from MT left join
     DT
     on MT.TYPE = '01' and MT.ID = DT.FK

1 Ответ

0 голосов
/ 04 января 2019

Если у вас нет настроенных индексов для таблиц MT и DT, то в целом оба запроса будут выполняться с использованием полного сканирования таблиц, и оба будут иметь одинаковую производительность.Ситуация, когда второй запрос может быть оценен быстрее, чем первый, имеет место при правильной настройке индексов, например,

(TYPE, ID) on the MT table
(FK, NAME) on the DT table

. В этом случае, если MT.TYPE = '01' были очень строгими, это может значительно сократить объем работы.база данных должна была бы сделать.Кроме того, этот набор индексов ускорит операцию соединения.

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