SQL语句优化系列一
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句优化系列一相关的知识,希望对你有一定的参考价值。
SQL语句优化
1.SELECT 子句中避免使用‘* ’
2.使用表的别名 (Alias)
当在 SQL 语句中连接多个表时 , 请使用表的别名并把别名前缀于每个 Column 上。这样一来,就可以减少解析的时间并减少那些由 Column 歧义引起的语法错误。
3.用 >= 替代 >
高效 : SELECT * FROM EMP WHERE DEPTNO >=4
低效 : SELECT * FROM EMP WHERE DEPTNO >3 两者的区别在于,前者 DBMS 将直接跳到第一个 DEPT 等于 4 的记录而后者将首先定位到 DEPTNO=3 的记录并且向前扫描到第一个 DEPT 大于 3 的记录。
4.优化 GROUP BY: 提高 GROUP BY 语句的效率 , 可以通过将不需要的记录在 GROUP BY 之前过滤掉。下面两个查询返回相同结果但第二个明显就快了许多。
低效 : SELECT JOB , AVG(SAL) FROM EMP GROUP JOB HAVING JOB = ‘PRESIDENT‘ OR JOB = ‘MANAGER‘
高效 : SELECT JOB , AVG(SAL) FROM EMP WHERE JOB = ‘PRESIDENT‘ OR JOB = ‘MANAGER‘ GROUP JOB
备注:避免使用HAVING子句,HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作。如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销。
以上是关于SQL语句优化系列一的主要内容,如果未能解决你的问题,请参考以下文章
MySQL5.7性能优化系列——SQL语句优化——使用物化策略优化子查询
「推荐收藏!」MySQL技术之旅总结和盘点优化方案系列之常用SQL的优化