Дом » базы данных » Какой SQL JOIN быстрее?

Какой SQL JOIN быстрее?

327
Последнее обновление: 2021-09-13 14:16:05


Ответить:
8 ответов. ЛЕВОЕ СОЕДИНЕНИЕ абсолютно не быстрее , чем ВНУТРЕННЕЕ СОЕДИНЕНИЕ . На самом деле это медленнее; по определению внешнее соединение (LEFT JOIN или RIGHT JOIN ) должно выполнять всю работу INNER JOIN плюс дополнительная работа по расширению результатов на нуль. Точно так же люди спрашивают, какое соединение с SQL Server быстрее? Ну, в общем, ВНУТРЕННЕЕ СОЕДИНЕНИЕ будет быстрее , потому что оно только возвращает строки, сопоставленные во всех соединенных таблицах на основе объединенного столбца. Но LEFT JOIN вернет все строки из таблицы, указанной LEFT, и все соответствующие строки из таблицы, указанной RIGHT. Точно так же, выполняется ли соединение быстрее, чем предложение where? 3 ответа. Для современных СУБД нет разницы между 'явным JOIN ' и ' JOIN -in-the-WHERE' (если все JOINS являются ВНУТРЕННИМИ) касается производительности и плана запроса. Теперь JOIN -before-WHERE - это логическая обработка, а не фактическая обработка, и современные оптимизаторы достаточно умны, чтобы это понять. Точно так же вы можете спросить, что быстрее: подзапрос или присоединение? LEFT [OUTER] JOIN может быть быстрее , чем подзапрос , используемый для того же случая, поскольку сервер сможет лучше его оптимизировать. Следовательно, подзапросы могут быть медленнее, чем LEFT [OUTER] JOIN , но их читаемость выше, чем у Joins . Повышают ли подзапросы производительность? Преимущество подзапросов в том, что они более читабельны, чем JOIN: вот почему большинство новичков в SQL предпочитают их; это легкий путь; но когда дело доходит до производительности , JOINS лучше в большинстве случаев, даже если их тоже нетрудно читать. В чем смысл коррелированного подзапроса и отдельного подзапроса ?

up