简单说下问题,有一个JDBC的查询SQL,分页查询语句中有一个排序order by create_time,理论上来说JDBC查询已经是比较底层的技术了,没有像Hibernate、MyBatis那样又对JDBC进行了封装,效率肯定是最好的,可谁想,3w多条数据,竟然慢的要死,经常抛出超时异常

遇到问题之后,首先在网上搜罗资料

关于Oracle排序的:http://blog.sina.com.cn/s/blog_8604ca230100vro9.html

也找到一个排序分页很慢的帖子:http://www.itpub.net/thread-1179246-1-1.html,好几年前的了,最终也没结贴

网上提到的各种解决办法,要么先分析SQL执行效率,要么建索引,但是根据经验来判断,一共就3w来条数据,怎么就会慢呢

仔细看了数据库中的数据,发现一个明显的问题,排序的字段create_time竟然有2w多条数据都是null值,终于找到原因了,没错,原因就是因为排序字段是相同的null值,分页之后查询就会很慢

找到原因,解决办法就简单了,把排序字段的null值赋值为流水时间即可~

Oracle数据库order by排序查询分页比不分页还慢问题解决办法的更多相关文章

  1. 010.Oracle数据库 , ORDER BY 按升序降序排序

    /*Oracle数据库查询日期在两者之间*/ SELECT DISTINCT ATA FROM LM_FAULT WHERE ( OCCUR_DATE BETWEEN to_date( '2017-0 ...

  2. Oracle数据库之七 多表查询

    七.多表查询 ​ 对于查询在之前已经学过了简单查询.限定查询.查询排序,这些都属于 SQL 的标准语句,而上一章的单行函数,主要功能是为了弥补查询的不足. ​ 而从多表查询开始就正式进入到了复杂查询部 ...

  3. Oracle 数据库基础:数据查询与操作

    SELECT uname FROM TUser WHERE uname=‘admin’ SELECT 字段名列表 FROM 表名 WHERE 条件; 在Oracle数据库中,对象是属于模式的,每个账户 ...

  4. 关于oracle数据库(8)查询2

    筛选数据,直接加where条件,并且and,或者or 使用rownum获取前N条数据 select * from 表名 where rownum <= 数字; 如:获取前5条数据 select ...

  5. oracle的order by排序中空字符串处理方法

    1.缺省处理 Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前 2.使用nvl函数 nvl函数可以将输入参数为空时转换为一特定值,如 ...

  6. SQLSERVER 创建对Oracle数据库的DBlink以及查询使用

    1. 与针对oracle数据库一样, 在sqlserver中创建对oracle数据库的dblink 安全性上面也进行定义(貌似不需要跟访问字符串只需要填一个即可) 发现有的版本改注册表不管用 还得修改 ...

  7. 007.Oracle数据库 , 使用%进行模糊查询

    /*Oracle数据库查询日期在两者之间*/ SELECT PKID, OCCUR_DATE, ATA FROM LM_FAULT WHERE ( ( OCCUR_DATE >= to_date ...

  8. Oracle数据库之单表查询

    接着上一篇的分享,今天主要给大家分享的是关于数据中的单表查询,单表查询很基础,也很重要,但是任何一个初学者必须要掌握的姿势,单表查询就是对单个表进行操作,查询我们想要的数据.单表查询里面的内容也是比较 ...

  9. oracle数据库使用之数据查询入门

    1.在查询过程中使用算术表达式对数据进行运算 student表结构如下: 最后一项salary表示每个人的月薪,我现在想查询每个人的年薪: 2.使用nvl函数处理null值,向表中插入一条数据,该数据 ...

随机推荐

  1. (原)docker的一个“Driver aufs failed to remove...”问题的解决

    1.  /var/lib/docker/aufs/mnt下的目录不能乱删! /var/lib/docker/aufs/diff下的目录删了就死了!!!!!2. 尽量不要用docker tag -f 这 ...

  2. java向mysql插入数据乱码

    修改jdbc的链接,将原来的         jdbc:mysql://localhost:3306/demo改为        jdbc:mysql://localhost:3306/demo?us ...

  3. Windows下MFC程序利用LockCop解决死锁

    死锁现象:在训练的时候,点击“终止”按钮时不时会发生死锁. 检测工具:LockCop.TRACE宏.::GetCurrentThreadID函数. 检测手段: 总结起来就是—— 第一步:用LockCo ...

  4. java 多线程 25 :线程和线程组的异常处理

    线程中出现异常 从上面代码可以看出来处理线程的异常 设置异常的两种方式 1.全局异常,也是静态异常,是个静态方法 , 类.setDefaultUncaughtExceptionHandler() 2. ...

  5. 使用spring-rabbit测试RabbitMQ消息确认(发送确认,接收确认)

    1.首先是rabbitmq的配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns ...

  6. 出去html中的标签

    C#写法 public static string StripHTML(string strHtml) { string strOutput = strHtml; Regex regex = new ...

  7. JQUERY双下拉框内容的左右移动

     教程源码:http://bbs.php100.com/read-htm-tid-74060.html用到的方法为:appendTo() 格式:$(content).appendTo(selector ...

  8. android——官方下拉刷新组件SwipeRefreshLayout(转)

    一.问题描述 在android开发中,使用最多的数据刷新方式就是下拉刷新了,而完成此功能我们使用最多的就是第三方的开源库PullToRefresh.现如今,google也忍不住推出了自己的下拉组件Sw ...

  9. cgi与fastcgi区别_转

    转自:https://www.cnblogs.com/wanghetao/p/3934350.html 当我们在谈到cgi的时候,我们在讨论什么 最早的Web服务器简单地响应浏览器发来的HTTP请求, ...

  10. opencv中图像伪彩色处理(C++ / Python)

    使用OpenCV的预定义的颜色映射来将灰度图像伪彩色化. 1. colormap(色度图)是什么? 假设我们想在地图上显示美国不同地区的温度.我们可以把美国地图上的温度数据叠加为灰度图像——较暗的区域 ...