Внешнее JOIN против Внутреннего JOIN - PullRequest
2 голосов
/ 30 марта 2012

Я всегда думал, что Inner Join работает лучше, чем Outer JOIN, но сейчас я сталкивался с несколькими случаями, когда это просто не соответствует действительности ...

На днях я создавал запрос ссерия ВНУТРЕННИХ СОЕДИНЕНИЙ.Внутреннее объединение было подходящим для всех этих объединений, так как я хотел, чтобы строки соответствовали только во всех соединенных таблицах.

Я заметил, что производительность была очень плохой (1 минута для выполнения запроса).Странно было то, что когда я переключил несколько из них на внешние соединения, запрос завершился через несколько секунд ... Это не случай прогрева или кэширования, потому что я перезапускал SQL-сервер между запусками, и показания производительности были согласованыСо временем.

Я столкнулся с такой же ситуацией в двух разных отчетах, но общая тема заключалась в том, что производительность повысилась путем перехода в режим LEFT JOIN.Я сделал переключатель для тех же таблиц для обоих отчетов.Все JOINS были выполнены по столбцам GUID

Left JOIN дал одинаковое количество строк, так как все идентификаторы были сопоставлены в таблицах JOINED, поэтому переключение было нормально, но мне любопытно, если у кого-нибудь есть объяснение.Любой совет по этому поводу?

Платформой был SQL Server 2008, и все внешние соединения были левыми соединениями

1 Ответ

4 голосов
/ 30 марта 2012

Внутреннее соединение быстрее, чем левое соединение.

Этот ответ должен дать вам несколько советов.

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