Я всегда думал, что Inner Join работает лучше, чем Outer JOIN, но сейчас я сталкивался с несколькими случаями, когда это просто не соответствует действительности ...
На днях я создавал запрос ссерия ВНУТРЕННИХ СОЕДИНЕНИЙ.Внутреннее объединение было подходящим для всех этих объединений, так как я хотел, чтобы строки соответствовали только во всех соединенных таблицах.
Я заметил, что производительность была очень плохой (1 минута для выполнения запроса).Странно было то, что когда я переключил несколько из них на внешние соединения, запрос завершился через несколько секунд ... Это не случай прогрева или кэширования, потому что я перезапускал SQL-сервер между запусками, и показания производительности были согласованыСо временем.
Я столкнулся с такой же ситуацией в двух разных отчетах, но общая тема заключалась в том, что производительность повысилась путем перехода в режим LEFT JOIN.Я сделал переключатель для тех же таблиц для обоих отчетов.Все JOINS были выполнены по столбцам GUID
Left JOIN дал одинаковое количество строк, так как все идентификаторы были сопоставлены в таблицах JOINED, поэтому переключение было нормально, но мне любопытно, если у кого-нибудь есть объяснение.Любой совет по этому поводу?
Платформой был SQL Server 2008, и все внешние соединения были левыми соединениями