SQL优化极简规则,以后别告诉我你不会

本文是基于Oracle数据库,进行讲解,后面的文章再讲MySQL.

1.只SELECT需要的结果,避免使用*

这是我们大家习惯这么写,一来这样方便,二来也并没有性能上的问题。因为数量级没有达到,要是换做在天猫那样的系统中,“select *”分分钟教会你做人。其实,这是非常低效的方法,DBMS在解析的过程中,会将*依次转换成所有的列名,这意味着将耗费更多的时间。

在互联网项目中,则意味着网络也需要传输更多的数据,从而导致性能的下降。

2.高效的表顺序

意思是FROM字句中的表名的顺序。Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表将被最先处理,我们通常把最后的表称之为基础表(DrivingTable)。

选基础表我们需要遵循以下原则:

a.数据量最少的表优先做基础表

b.3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表

3.注意WHERE语句里的条件顺序

Oracle数据库是自下而上解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。

最后记住一个规律:执行顺序表名从右往左,条件自下而上。

(0)

相关推荐