sql调优之执行计划之排序————SORT ORDER BY STOPKEY

 

一条sql语句手动执行时速度一般,而且使用绑定变量后效率更低
查看实时执行计划
SELECT * FROM table (DBMS_XPLAN.DISPLAY_CURSOR('07rdcx5z95a62', NULL, 'TYPICAL LAST'));
发现计划中没有走索引
TABLE ACCESS FULL
手动执行时至少还走了个索引t_IDX1

强制使用索引t_IDX1
SELECT * FROM ( SELECT a.*, rownum r FROM ( SELECT /*+ index ( t t_IDX1 )*/ sss FROM t WHERE t_id = :t_id ORDER BY
add_time DESC ) a WHERE rownum <= :limit_to ) b WHERE r > :limit_from

强制后和手动时的执行计划一致,估计是加了rownum的原因,效率还是不理想,特根据order by新增索引t_IDX2(t_id,add_time)
按说索引都是排好序的,所以手动执行时效率大幅提升,但是使用绑定变量时还是不行,还是重新去排序了
 SORT ORDER BY STOPKEY
为避免改状况发生,使用了 /*+ index_desc ( t t_IDX2 )*/ ,强制索引上排好序
再看实时的执行计划和执行时间,就ok了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值