oracle count 百万级 分页查询记录总数、总条数优化

oracle count 百万级 查询记录总数、总条数优化

最近做一个项目时,做分页时,发现分页查询速度很慢,分页我做的是两次查询,一次是查询总数,一次是查询分页结果

/** 查询总记录数 **/

SELECT

COUNT(id)

FROM

USER

order by

id

/** 查询结果集 **/

select

*

from

( select

row_.*,

rownum rownum_

from

( select

id ,

user_number,

user_name,

user_password,

sex,

Registered_time,

last_login_time,

post

from

USER u

order by

u.id) row_

where

rownum <= ?

)

where

rownum_ > ?

user表中的记录是128万多条,这个是没有查询条件时的查询,也就是用户刚刚进入模块时的查询,发现查询时间是2566ms~2152ms之间,单独执行每条语句,发现第一条的执行时间在2000ms以上,在PL/SQL中执行的结果也证实了我的判断。所以要对select count语句进行优化。

在网上找了很多优化方案,大多不尽人意,(分表的方式听上去不错,不过由于单表是历史原因,这里就不作考虑)。最后找到一个比较令人满意的答。就是在语句中加入 /*+ROWID(USER)*/或者/*+ INDEX(USER ID) */ 来提高查询效果。

听说这个就是强制使用索引统计结果?如果有哪位大虾能把原理详细告诉我,请来多多指点!

SELECT /*+ROWID(USER)*/ count(*) FROM USER t

或者

SELECT /*+ INDEX(USER ID) */ count(*) FROM USER t

使用后,单条统计总数的查询在800ms左右,分页查询结果基本在900ms~950ms之间,基本在一秒之内,达到了当初设计需求。

当然,这个是没有加查询条件的,当把查询条件加入后,不管前面加不加强制索引,结果时间都在2000ms之间,所以,如果要进行有条件的查询,就要在where条件中进行优化。特别注意条件字段查询前后顺序。

具体优化请参考

1.浅析Oracle语句优化规则

http://www.cnblogs.com/Automation_software/archive/2011/01/21/1940883.html

oracle分页查询加总数,oracle count 百万级 分页查询记要总数、总条数优化相关推荐

  1. ASP.NET 百万级分页查询(Oracle)

    包括ASP.NET和ASP.NET AJAX + JSON两个DEMO,最低耗时35ms左右(AJAX+JSON).百万级数据库查询分页,使用Oracle 存储过程.Asp.net 2.0 + ,Or ...

  2. ASP.NET 百万级分页查询续

    介绍: 包括ASP.NET和ASP.NET AJAX + JSON两个DEMO,最低耗时35ms左右(AJAX+JSON). 百万级数据库查询分页,使用Oracle 存储过程. 代码生成的案例: As ...

  3. 解决Mybatis-Plus或PageHelper多表分页查询总条数不对问题

    文章目录 前言 一.问题说明 1.引入依赖 2.Mybatis-Plus配置 3.创建mapper层 4.编写xxxMapper.xml文件 5.测试一(不传任何条件,只分页) 5.1.结果总结 5. ...

  4. 使用redis缓存加索引处理数据库百万级并发

    使用redis缓存加索引处理数据库百万级并发 前言:事先说明:在实际应用中这种做法设计需要各位读者自己设计,本文只提供一种思想.准备工作:安装后本地数redis服务器,使用mysql数据库,事先插入1 ...

  5. mysql查询优化count(*)-查询记录总条数(二)

    前文提到查询记录总条数有时候会使用到where来限定查询范围. 从优化原则来说,where可能会降低效率. 但是如果where设定的合理,符合一定条件,也可以实现查询优化效果. 如果条件是索引列,那么 ...

  6. mysql 查询条数优化_MySQL优化总结-查询总条数

    1.COUNT(*)和COUNT(COL) COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数 ...

  7. mysql 查询数据条数_MySQL优化总结-查询总条数

    1.COUNT(*)和COUNT(COL) COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数 ...

  8. mysql查询语句ppt,mysql查询表中数据总条数的语句怎么写

    sql查询表中数据总条:SELECT COUNT(*) FROM 表名称.count(*)代表着抄数据统计的总数.例子本例返回 "Persons" 表中的行数:SELECT COU ...

  9. ruoyi框架分页总条数total返回错误解决方案

    ruoyi框架分页总条数total返回错误解决方案 原因:因为自己重新定义了分页方法,如: 就会出现总数返回数据错误问题 总数会变成当前页条数的 这是分页的核心,这里传过来的list 没有 insta ...

最新文章

  1. php根据不同的条件替换一段html代码中的不同的img标签
  2. aspnet_merge.exe”已退出,代码为1的错误的解决方法
  3. Jupyterlab 插件安装后侧边栏找不到的解决
  4. php页面增加自选项,php - 添加自定义设置选项卡,Woocommerce的设置客户列表内容 - SO中文参考 - www.soinside.com...
  5. 并发译文翻译计划(二)
  6. c#中contextMenuStrip与datagridview使用CellMouseDown事件及treeview使用mousedown事件
  7. 两圆相交求面积 hdu5120
  8. Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
  9. jquery的全选代码
  10. Java高并发编程详解系列-不可变对象设计模式
  11. 易错丨Oracle 每日一题系列合集
  12. 小米9 Pro 5G评测:史上最低价5G手机
  13. c#文件分割与合并 part 1 (转自互联网)
  14. 以下数据库收录外文文献全文的有_除了SCIHUB,这十大外文文献下载数据库也应该一试!...
  15. 职场泥潭 | 这样的IT公司绝对不宜久留
  16. 医院信息系统基本功能规范---医疗保险接口功能规范
  17. vue解析excel文件(使用xlsx)
  18. [Erlang危机](3.1)常见过载情景
  19. 买一台服务器到底能干什么?可用于这7点!
  20. springfox集成教程

热门文章

  1. [渝粤教育] 中国地质大学 金融保险业会计 复习题
  2. 【渝粤题库】陕西师范大学202241 金融市场学 作业(专升本)
  3. 【渝粤题库】广东开放大学 人力资源管理(本科) 形成性考核
  4. php manager iis 8,PHPManager2下载
  5. php中可以实现分支,PHP中的分支及循环语句
  6. LaTeX的编译速度优化方案
  7. c语言汉字属于什么类型_狠准!你的名字属于什么类型 就是什么性格
  8. typora导出word指定样式_(二)最简洁的Markdowd编辑器:Typora
  9. excel转las文件_这3种Word、Excel格式不变的互转方法,实在太好用了
  10. 【数字信号处理】复数的另一种思考之平均风向测量(Python实现)