подзапросов против JOIN и
JOIN и, как правило, быстрее, предполагая, что поля, на которых JOIN выполняется индексируются. Подзапросы могут быть полезны для извлечения очень маленького подмножества на основе индекса и присоединения к основной таблице. По моему опыту, JOINs были превосходными по производительности. Различные базы данных могут оптимизировать JOIN и подзапросы по-разному. Вы можете получать разные результаты в SQL Server и MySQL (и их разных версиях). Таким образом, измерение/оценка производительности имеет важное значение, что приводит нас к следующему вопросу
время измерения/оценки
Я предпочитаю делать EXPLAIN и EXPLAIN EXTENDED на запрос с JOIN и суб-запрос, чтобы получить представление о том, как DB (предполагая, MySQL) использует индексы. Запустите запросы к текущему набору данных, а затем создайте более крупный набор данных в 3 раза по сравнению с текущим и запустите с ними запросы в непроизводственной системе. Это даст вам количество секунд, которые должен выполнить запрос.
На SQL Server, когда вы объясните, вы увидите номера затрат. Вы можете сравнить их для запроса запроса JOIN или запроса запроса, а затем выполнить прогон с зависающим набором данных и набором данных в 3-5 раз (или 10 раз) больше, чем текущий, чтобы увидеть, как ваши запросы выполняются.
http://stackoverflow.com/questions/2577174/join-vs-sub-query – sqluser
первый ответ: Почему вы не просто попробовать это сами? 2-й ответ: [Да, есть.] (Http://bit.ly/1DW0NDC) –
Третий ответ: сначала сосредоточьтесь на том, что вам действительно нужно. Иногда вам приходится использовать коррелированный подзапрос, и соединение не будет выполнено. В этом случае производительность не имеет значения. – siride