避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销.
例如:
低效:
SELECT REGION,AVG(LOG_SIZE)
FROM LOCATION
GROUP BY REGION
HAVING REGION REGION != ‘SYDNEY’
AND REGION != ‘PERTH’
高效
SELECT REGION,AVG(LOG_SIZE)
FROM LOCATION
WHERE REGION REGION != ‘SYDNEY’
AND REGION != ‘PERTH’
GROUP BY REGION
( HAVING 中的条件一般用于对一些集合函数的比较,如COUNT() 等等. 除此而外,一般的条件应该写在WHERE子句中)
本文探讨了在SQL查询中WHERE与HAVING子句的使用差异,强调了在可能的情况下优先使用WHERE子句来提高查询效率,避免不必要的记录筛选和处理,通过实例对比展示了如何将HAVING子句的条件前移至WHERE子句,从而减少处理开销。
2212

被折叠的 条评论
为什么被折叠?



