oracle分页越往后查询越慢,关于ORACLE提升分页查询速度的猜想

祝大家新年快乐,有任何问题可与我联系:0965a7154146dd49b11cadccd18d91c7.png

在一次查询当前用户下有多少张表时用到了以下SQL:

1 SELECT COUNT(*) FROM USER_TABLES;

便开始学习这张表,USER_TABLES是一张存放着表相关信息的视图,比如表名、字段数、记录数……

于是就可以使用以下SQL得到某张表的记录数:

2 SELECT NUM_ROWS FROM USER_TABLES WHERE TABLE_NAME = ‘TABLE_NAME’;

会发现这条SQL的持行速度非常的快,看到这不知道大家有什么样的想法呢?

没错,我们在实际使用中对拥有上千万级数据的大型表统计速度非常慢,例如在前台分页展示数据时所带的分页统计。

那么我们是否可以将前台展示分页数据的统计SQL换成这条呢?那样统计速度将会有质的提升。

很遗憾,到现在为止答案还是否定的,因为USER_TABLES这张视图的数据不是实时刷新的,需要我们用以下SQL来更新数据:

3 ANALYZE TABLE TABLE_NAME ESTIMATE STATISTICS;

那么问题就来了,我们在每次持行2SQL之前都得持行3SQL,但是不知道ANALYZE的速度有多快,如果对于千万级的数据也能很快的持行就OK了,希望哪位高手能够分析出来。

还有一种方法就是我们如果可以让其自动刷新就更好了,因为这个是由ORACLE控制的,不过到现在还没有找到方法,如果有哪位ORACLE牛人知道方法还望共享出来。

下面我们来讨论一下应用范围,因为2SQL得到的是某张表的所有记录,如果某个统计需要带条件查询的话就没有办法使用这个方法了。所以,这种方法只适应于对全表分页查询时。

当然我们也可以模拟USER_TABLES建立自己的表,用来存储大型表的统计信息,然后通过定时程序对这张表更新,自己建立表的话还可以设计成适用于带条件的统计查询。

~谢谢打赏~手机请长按图片~

8ab42301bbc2800528b800f60bb82ad3.png

赞 赏

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值