怎样优化SQL 提高查询效率

本篇文章讲一下优化SQL的几种方法形式,如下可见:

①:选择最有效的表名顺序。

例如:TABLE1 有1000条数据,TABLE2只有1条数据,那么就是选择数据量小的表作为SQL的基础表。

②:WHERE字句中的连接顺序

因为Oracle的解析按照自上而下解析,因此表之前的连接必须写在where条件之前。

例:

        低效:SLECT ... FROM EMP E WHERE SAL > 5000 AND JOB = 'manager' and 25 < (SELECT COUNT(*) FROM EMP WHERE MGR = E.EMPNO); 

        高效:SLECT ... FROM EMP E WHERE 25 < (SELECT COUNT(*) FROM EMP WHERE MGR = E.EMPNO) AND SAL > 5000 AND JOB = 'manager' ;

③:通配符的使用

如果SQL在执行带通配符的语句时,如果' % '在首位,那么字段建立的主键或者索引将失效。应避免这种语句的出现。

④:用WHERE字句代替HAVING字句

HAVING是对检索出来的结果集再次进行检索,如果通过WHERE去限制则可减少该方面的开销。

⑤:增加索引

索引是一个表的概念部分,用来提高检索数据的效率。但是索引需要额外的存储空间, 那些不必要的索引反而会是SQL的查询时间变长,所以索引不宜过多,还需要定期重构。

⑥:避免在索引列上使用计算

WHERE子句中,如果索引是函数的一部分,优化器将不使用索引而使用全表扫描。

⑦:用 IN 代替 OR

⑧:避免使用耗费资源的操作

带有DISTINCT、UNION、MINUS、INTERSECT、ORDER BY的SQL语句会启动SQL引擎执行耗费资源的排序(SORT)功能,DISTINCT需要执行一次,而其他至少需要执行两次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王胖虎~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值