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的优化

mysql 开发进阶篇系列 5 SQL 优化

SQL Server调优系列玩转篇三(利用索引提示(Hint)引导语句最大优化运行)

SQL语句优化系列三(关于select查询)

SQL优化系列- 不修改SQL源码,如何让SQL飞?