开发sql优化常用

 

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

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

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

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

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

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

你可能感兴趣的:(SQL优化)