SQL语句的执行顺序和优化

SQL语句的执行顺序:
查询中用到的关键词主要包含六个,并且他们的顺序依次为 :
select–from–where–group by–having–order by

其中select和from必须按照顺序执行,其他关键词是可选的,这六个关键词的执行顺序:
from–where–group by–having–select–order by,

from:先确定从哪个表中取数据,所以最先执行from tab。存在多表连接,from tab1,tab2。可以对表加别名,方便后面的引用。
where:where语句是对条件加以限定,如果没有需要限定的,那就写成where 1=1,表示总为true,无附加条件。
group by…… having:分组语句,比如按照员工姓名分组,要就行分组的字段,必须出现在select中,否则就会报错。having是和group by配合使用的,用来作条件限定。
聚合函数常用的聚合函数有max,min, count,sum,avg,聚合函数的执行在group by之后,having之前。如果在where中写聚合函数,就会出错。
select语句:选出要查找的字段,如果全选可以select *。
order by:排序语句,默认为升序排列(asc),降序排列(desc)。

为什么要对SQL进行优化:
开发项目上线初期,由于业务数据量相对较少,一些SQL的执行效率对程序运行效率的影响不太明显,而开发和运维人员也无法判断SQL对程序的运行效率有多大,故很少针对SQL进行专门的优化,而随着时间的积累,业务数据量的增多,SQL的执行效率对程序的运行效率的影响逐渐增大,此时对SQL的优化就很有必要。

优化可以分为以下三个方面:
1.慢查询 2.索引 3.拆分表

SQL的优化:
1.查询语句中不要使用 *。
2.尽量减少子查询,使用关联查询(left join,right join,inner join)替代。
3.减少使用IN或者NOT IN ,使用exists,not exists或者关联查询语句替代。
4.or 的查询尽量用 union或者union all 代替。
5.合理的增加冗余的字段(减少表的联接查询)。
6.增加中间表进行优化。
7.建表的时候能使用数字类型的字段就使用数字类型,数字类型的字段作为条件查询比字符串的快。
8.那些可以过滤掉最大数量记录的条件必须写在WHERE子句的最末尾。
9.尽量不要有空判断的语句,因为空判断将导致全表扫描,而不是索引扫描。对于空判断这种情况,可以考虑对这个列创建数据库默认值。
10.尽量不要使用不等于条件,因为,这会导致全表扫描、对于不等于这种情况,考虑改为范围查询解决。
11.尽量不要使用左右模糊查询,因为,这会导致全表扫描对于左右模糊查询的情况,试着改为右侧模糊查询,这样是可以索引查找的。
12.如果上面的没什么好改变了的话,那我们就要考虑加索引了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值