识别低效SQL

本文探讨如何识别低效SQL,包括关注返回行与逻辑读比率、评估值准确性、隐式类型转换、递归调用、表访问次数和排序问题。通过特定指标和解决方法,如增加索引、收集直方图、避免类型转换和减少磁盘排序,可以显著提升SQL性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

识别低效SQL


   ★ 返回行与逻辑读比率;

   ★ 评估值准确的重要性;

   ★ 隐式类型转换需认真关注;

   ★ 请小心递归调用部分;

   ★ 表的访问次数需敏感;

   ★ 注意表真实访问行数;

   ★ 谨慎的观察排序与否。

还有的原因,如:水平位过高

 

解决办法:

 

1、返回行与逻辑读比率

一般而言,每获取一行开销5个以下的逻辑读是属于基本比较满意的。

     发现问题方法有如下两种:

     √ BUFERS/A-ROWS                    (statistics_level方法)

     √ consistent gets/rows processed   (autotrace 方法)

解决方法:

     解决增加索引后,逻辑读就减少了。

 

2、评估值准确的重要性:

E-Rows和A-Rows差异巨大,肯定有问题。

解决方法:

     收集直方图后就解决了。

 

3、表的访问次数需敏感:

        对于又是NL连接,start访问次数又超大,肯定有问题,因为start很大的话是不会走NL连接的

解决方法:

     收集直方图后就解决了。

 

4、类型转换需认真关注:

     出现的类似filter(TO_NUMBER....这种的,就是发生了类型转换。

     这种情况用不上索引,需要注意。

解决方法:

     遵循的规则,是什么类型的取值就设置什么样的字段!

 

5、请小心递归调用部分:

        递归调用的次数(recursivecalls)

解决方法:

     通过10046揪出到底是什么SQL产生这么多递归调用。改写SQL。

 

6、谨慎的观察排序与否:

     排序是很费内存的事。     

     发现问题方法有如下两种:

    sorts (memory) sorts (disk) (autotrace的方法,其中如果出现sorts(disk)有值,说明再磁盘中排序了,情况就糟了。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值