开发sql优化常用

 

1、检查SQL语句关联到的表有多少个

一条SQL语句如果关联到的表个数太多,就会由于排列组合的基数增大,导致CBO在产生执行计划的时候,可选执行计划太多,这不仅会增加CBO获得最优执行计划的时间,还可能使SQL语句的执行计划变得很不稳定,让同一条SQL语句在某个情况下出现执行效率较低的情况.一般而言,参与SQL语句的表个数不要超过5个,尤其是参与连接的表不是主键关联的基表时,表的连接个数更不要太多,如果的确要关联那么多表,就要考虑是否可以将SQL语句拆分,或者是否是表结构的设计不太合理,需要考虑方法加以改善。

2SQL语句关联主表中的WHERE条件是否有合适的索引

我们都很惧怕SQL语句在执行时出现全表扫描,尤其是大表的全表扫描,这在多数情况下不无道理,因为我们的数据大多是在线实时处理的,此时SQL语句选择的数据量不能太多,响应时间却要求极高,这说明数据的选择性一般较好,通过全表扫描可能不太合理,往往需要通过区分度高的索引来直接筛选数据。如果SQL中关联主表的WHERE条件上有索引,查看执行计划时也确实用到了这个索引,问题就不会太大,如果没有索引,就要考虑其他的已知条件是否可以有效筛选数据,还是不行的话,建议对该表新建一个索引进行评估。

3SQL语句中是否使用了不恰当的函数

SQL 语句中不恰当地使用函数,尤其是在索引字段上使用函数,会降低 SQL 语句的执行效率,这几乎成了我们的共识,不过,我们在 SQL 开发时,仍然会不经意的、在不一定要使用函数的地方使用函数,这一点在日期函数的使用上表现得比较突出,比较典型的写法为: trunc( 表的日期字段 )>= <=trunc( 传入的日期变量 ), 其实这种写法可以转变为仅在变量这部分使用函数,而不必要在数据库的字段上使用函数。

转载于:https://my.oschina.net/u/729507/blog/86663

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值