лучшая производительность sql2005: подзапросы против присоединений? - PullRequest
0 голосов
/ 09 марта 2011

Что лучше с точки зрения эффективности сервера SQL, использовать вместо этого подзапросы или объединения?

Я знаю, что некоррелированные лучше, чем коррелированные подзапросы. Но как насчет объединений?

SQL становится более читабельным и понятным при использовании объединений OUTER JOIN and check for NULLS но это хуже или лучше для производительности БД?

Ответы [ 2 ]

3 голосов
/ 09 марта 2011

Вы обнаружите, что с помощью JOIN механизм оптимизации запросов в SQL Server может сформулировать более эффективный план выполнения запросов. Как правило, лучше всегда использовать JOIN, но если есть проблема с производительностью, попробуйте заново обработать различия в производительности запросов и документов. Всегда есть очень странные исключения.

Возьмем, к примеру, мой запрос, над которым я работал вчера - добавив к запросу ORDER BY, он выполнялся на быстрее , чем без ORDER BY. Какого черта? Как это может быть? Кажется, это идет вразрез с самой концепцией SQL, поскольку каждая операция требует затрат времени. Однако планы выполнения запросов были созданы SQL Server 2000 совершенно по-разному с ORDER BY и без него. Пойди разберись! Указывается на важность проверки планов выполнения и мониторинга производительности запросов.

1 голос
/ 09 марта 2011

Сложно ответить на такой абстрактный вопрос, как этот, но в очевидных случаях я могу подумать о том, где мне нужно было бы выбирать между двумя, а затем подзапросами.против OUTER JOIN and NULL и IN / EXISTS против JOIN и DISTINCT.В любом случае подзапросы появляются в плане как JOINS.

(Edit: только что заметил, что второй из моих примеров - это , упомянутый в вашем вопросе)

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