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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql为字段值添加或者去除前缀、后缀(查询字段拼值)

添加前缀update ecs_goods set goods_nameconcat(新中式,goods_name) where cat_id 4; 添加后缀update ecs_goods set goods_nameconcat(goods_name,新中式) where cat_id 4; 删除 update ecs_goodsset goods_nameright(goods_name,length(goods_name)-1) where cat_id 4; 其中…

maven使用testng_使用ReportNG更好看的TestNG HTML测试报告– Maven指南

maven使用testng当“扩展TestCase”是编写测试中必不可少的部分时&#xff0c; TestNG是作为JUnit 3的注释驱动替代创建的测试框架。 即使到现在&#xff0c;它也提供了一些有趣的功能&#xff0c;例如数据提供程序&#xff0c;并行测试或测试组。 在我们的测试不是从IDE执行的…

谈谈你对oracle的认识,对Oracle存储过程的几点认识

1、写Oracle存储过程时最好不要在其中写Commit语句。一般调用程序会自动Commit数据&#xff0c;比如用NHibernate调用的时候&#xff0c;NHibernate就会自动Commi1、写Oracle存储过程时最好不要在其中写Commit语句。一般调用程序会自动Commit数据&#xff0c;&#xff0c;比如用…

1046. 划拳(15)

1046. 划拳(15) 划拳是古老中国酒文化的一个有趣的组成部分。酒桌上两人划拳的方法为&#xff1a;每人口中喊出一个数字&#xff0c;同时用手比划出一个数字。如果谁比划出的数字正好等于两人喊出的数字之和&#xff0c;谁就赢了&#xff0c;输家罚一杯酒。两人同赢或两人同输则…

JavaFX将会留下来!

上周在网上看到了一些有关JavaFX未来的讨论。 许多人给人的印象是JavaFX将被Oracle搁置。 这主要是由Shai Almog&#xff08;代号One&#xff09;撰写的博客文章“ Should Oracle Spring Clean JavaFX”引起的。 这是我早些时候写的一个博客“启发”的&#xff0c;我在其中强调…

oracle 事务未正常回滚,Spring事务没有回滚异常(Oracle JNDI数据源)

我在Spring MVC 3.1项目中使用基于注释的事务,并且在抛出异常时我的事务没有被回滚.这是我的服务代码Servicepublic class ImportService {AutowiredImportMapper importMapper;Transactional(propagationPropagation.REQUIRED, isolationIsolation.READ_COMMITTED, rollbackFo…

Tomcat的详解和优化

Tomcat的详解和优化 转自:http://www.toutiao.com/i6387497067698192897/ 一、Tomcat的缺省是多少&#xff0c;怎么修改 Tomcat的缺省端口号是8080. 修改Tomcat端口号&#xff1a; 1.打开Tomcat目录下的conf/server.xml文件&#xff0c;在里面找到下列信息 <Connector port”…

远程修改linux文件内容,用VS Code连接远程Linux服务器实时修改代码

安装Remote SSH插件并使用3.1安装然后去vs code里面搜索remote ssh就可以看到该插件&#xff0c;点击安装即可。3.2界面改变安装完该插件后我们可以看到我们的侧栏已经多了一个远程的图标&#xff0c;让我们点击它&#xff0c;如下所示&#xff1a;3.3使用插件①、点击新添加一…

转载 C++实现的委托机制

转载 C实现的委托机制 1.引言 下面的委托实现使用的MyGUI里面的委托实现&#xff0c;MyGUI是一款强大的GUI库&#xff0c;想理解更多的MyGUI信息&#xff0c;猛击这里http://mygui.info/ 最终的代码可以在这里下载&#xff1a;http://download.csdn.net/detail/gouki04/364132…

jmeter负载测试测试_Apache JMeter:随心所欲进行负载测试

jmeter负载测试测试这是有关使用Apache JMeter进行负载测试的第二篇文章&#xff0c;请在此处阅读第一篇文章&#xff1a; 有关对关系数据库进行负载测试的分步教程。 JMeter有很多采样器 。 如果您需要JMeter不提供的采样器&#xff0c;则可以编写您的自定义采样器。 &#xf…

linux中文件属性mtime,linux stat (三个时间属性命令可用来列出文件的 atime、ctime 和 mtime。)...

[[email protected] ~]# stat test/test2File: ‘test/test2‘Size: 0 Blocks: 0 IO Block: 4096 普通空文件Device: 803h/2051d Inode: 261657 Links: 1Access: (0744/-rwxr--r--) Uid: ( 500/ user1) Gid: ( 500/testgroup)Access:…

教程:测试期间的日志记录

日志记录是一种流行的解决方案&#xff0c;用于显示软件在运行时的运行状况。 但是&#xff0c;当我们使用jUnit / TestNG对应用程序进行单元测试时&#xff0c;日志记录会怎样&#xff1f; 在自动化测试执行期间&#xff0c;我们通常不希望看到日志记录消息&#xff0c;因为…

VM虚拟机ping不通局域网其他主机的解决办法

1 我的笔记本的无线网卡是自动获取IP&#xff0c;并且是通过无线网卡上网。 2 我的有线网卡是通过自己设定IP跟局域网的其他机器连通。当前设定的IP为172.16.17.2 3我需要连接的局域网另一个主机为172.16.17.8&#xff0c;现在测试主机跟这个局域网的另一台主机是可以ping通的。…

moxy json介绍_MOXy作为您的JAX-RS JSON提供程序–客户端

moxy json介绍最近&#xff0c;我发布了如何利用EclipseLink JAXB&#xff08;MOXy&#xff09;的JSON绑定来创建RESTful服务。 在本文中&#xff0c;我将演示在客户端利用MOXy的JSON绑定有多么容易。 MOXy作为您的JAX-RS JSON提供程序–服务器端 MOXy作为您的JAX-RS JSON提供…

linux命令画圣诞树图片,以 Linux 的方式庆祝圣诞节

原标题&#xff1a;以 Linux 的方式庆祝圣诞节当前正是假日季&#xff0c;很多人可能已经在庆祝圣诞节了。祝你圣诞快乐&#xff0c;新年快乐。为了延续节日氛围&#xff0c;我将向你展示一些非常棒的圣诞主题的 Linux 壁纸。在呈现这些壁纸之前&#xff0c;先来看一棵 Linux 终…

Mockito教程:使用Mockito进行测试和模拟

课程大纲 Mockito是根据MIT许可证发布的Java开源测试框架&#xff0c;该框架允许在自动化单元测试中创建测试双重对象&#xff08;模拟对象&#xff09;&#xff0c;以实现测试驱动开发&#xff08;TDD&#xff09;或行为驱动开发&#xff08;BDD&#xff09;的目的。 如官方文…

LINQ 学习路程 -- 查询语法 LINQ Query Syntax

1.查询语法 Query Syntax: from <range variable> in <IEnumerable<T> or IQueryable<T> Collection><Standard Query Operators> <lambda expression><select or groupBy operator> <result formation> // string collectio…

linux 权限提示信息,命令行快速提示:权限进阶 | Linux 中国

原标题&#xff1a;命令行快速提示&#xff1a;权限进阶 | Linux 中国本部分介绍使用权限管理文件访问和共享的其他方法。-- Paul W. Frields前一篇文章。本部分介绍使用权限管理文件访问和共享的其他方法。它建立在前一篇文章中的知识和示例的基础上&#xff0c;所以如果你还没…

nginx正确服务react-router应用

如今React应用普遍使用react-router作为路由管理&#xff0c;在开发端webpack自带的express服务器下运行和测试表现均正常&#xff0c;部署到线上的nginx服务器后&#xff0c;还需要对该应用在nginx的配置里作相应调整&#xff0c;否则浏览器将不能正常使用该应用&#xff0c;表…

linux多进程 段错误,关于段错误

一个月的时间&#xff0c;就为了解决一个问题&#xff0c;段错误运行环境&#xff1a;arm-linux模块&#xff1a;XML&#xff0c;为多线程&#xff0c;多socket的网络通信协议程序现象&#xff1a;XML在运行一段时间以后&#xff0c;出现段错误&#xff0c;运行的时间和出现问题…