SQL性能调优的原理

 
ps:今天我们公司 培训了SQL性能培训,从中学到了些东西,还没经过测试,讲课的是我们公司的项目经理,听他说,他也是在网上找了些资料进行讲解的,他也是在网上找的资料。大致介绍了如下几方面:
 
1、SQL执行的原理
 
第一步:客户端把sql语句发给服务器端
 
第二步:语句解析
 
1)从缓冲池中查找是否有相同的sql语句,其中对于相同sql的判断有二方面限制(sql语句完全相同,包括空格、换行等;绑定变量要完全相同;)
 
2)语言语义检查,检查是否有sql语法错误,这会很消耗内存资源
 
3)获得对象解析锁
 
4)数据访问权限的核对
 
5)确定最佳执行计划
 
第三步:执行执行计划
 
1)首先到缓存中查询是否已经在缓存了,不在的话会到 数据库查询到数据后放到缓存,在的话则直接返回
 
第四步:提取数据
 
1)查询出的数据还是在服务器的进程中,需要通过这个过程将服务器进程中的数据提取到客户端的进程
 
 
2、sql语句执行顺序
 
from子句  --> where子句 --> group by -->  having --> select --> order by
 
其中from子句和where子句根据数据库的不同导致执行顺序不同,db2是从左往右,oracle是从右往左,另外order by 和having 子句很耗资源,尽量避免使用,由于whereere子句的执行顺序,我们可以将可以过滤最多的条件放到最先执行
 
3、对于索引的使用要小心,对大数据量的表创建索引是值得的,有很多写法回导致索引失效,如selec * from user u where u.age +1 > 10;其中age已经被创建索引这样对索引进行计算会导致索引失效
 
4、项目开始时最好不要创建索引,到后期在创建索引比较好,因为项目前期一般对数据库的变动会比较大,这时维护索引得不偿失,索引的创建不一定会提高效率

http://www.2cto.com/database/201305/209565.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值