VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > sql数据库 >
  • sql语句大全之sql调优之执行计划之排序

一条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 ( tt_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 ( tt_IDX2 )*/,强制索引上排好序
再看实时的执行计划和执行时间,就ok了


相关教程