Oracle在navicat查看执行计划,order by时间索引优化

select * from TB_SS_INFORMATION_CN order by PUB_DATE desc ;

该表目前10w数据,再不建立索引的情况下,执行此SQL时间为1min.可查看其执行计划:

先执行 EXPLAIN PLAN FOR select * from TB_SS_INFORMATION_CN order by PUB_DATE desc ;

再执行 select * from table(dbms_xplan.display); 主要看rows。如果都显示100k了那说明就是需要优化。

对于ORDER BY 时间的优化,先建立PUB_DATE字段的索引。

CREATE INDEX TB_PUBDATE_INDEX ON TB_SS_INFORMATION_CN(PUB_DATE);

然后在SQL语句中加入where条件,对于PUB_DATE的范围取值。这样的话可以走到索引。这种时间区间ORACLE也专门提供了。以下是取最近一个月的记录。

select * from TB_SS_INFORMATION_CN  where  IS_HOTTOPIC = 'Y' and  PUB_DATE>=add_months(trunc(SYSDATE),-1) and
PUB_DATE<= SYSDATE order by PUB_DATE desc ;

再次查看执行计划

猜你喜欢

转载自blog.csdn.net/weixin_42740540/article/details/123333475
今日推荐