Некоторые различия между ON и WHERE в SQL, которые могут влиять на производительность запросов:
- Порядок выполнения. www.bennadel.com Предложение ON выполняется раньше, чем WHERE. www.bennadel.com Некоторые считают, что критерии, размещённые в ON, могут выполняться быстрее. www.bennadel.com
- Работа с OUTER JOIN. sky.pro www.bennadel.com Если использовать WHERE вместо ON при работе с OUTER JOIN, это может радикально изменить результаты запроса, исключив строки, которые должны были быть представлены в результатах. sky.pro Это связано с тем, что условия в ON применяются к таблице до соединения, а WHERE — к результату соединения. www.bennadel.com
- Работа с NULL. sky.pro Фильтрация по значениям NULL в секции WHERE отличается от фильтрации при соединении. sky.pro В разделе WHERE строки с NULL будут исключены из результатов, в отличие от JOIN, где NULL принимается во внимание при формировании результатов запроса. sky.pro
Однако стоит учитывать, что влияние размещения условий на производительность может быть непредсказуемым, так как SQL-оптимизаторы могут производить манипуляции с предикатами. sky.pro Кроме того, в разных языках и версиях SQL план выполнения запросов может отличаться. www.atlassian.com