博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle数据库排序后分页慢的问题
阅读量:7114 次
发布时间:2019-06-28

本文共 3245 字,大约阅读时间需要 10 分钟。

hot3.png

传统思路:

SELECT *  FROM (SELECT TMP_PAGE.*, ROWNUM ROW_ID          FROM (  SELECT LG.MESSAGE_ID messageId,                         LG.PRODUCTION_ID productionId,                         NVL (LG.PRODUCTION_NAME, '汇总控制')                            productionName,                         LG.RULE_ID ruleId,                         LG.RULE_NAME ruleName,                         LG.MESSAGE_CONTENT messageContent,                         SUBSTR (LG.MESSAGE_CONTENT,                                 0,                                   INSTR (LG.MESSAGE_CONTENT,                                          'br/>',                                          1,                                          1)                                 - 2)                            messageHead,                         DECODE (LG.STEP,                                 '0', '事前风控',                                 '1', '事中监控',                                 '事后巡检')                            step,                         LG.COMUPTE_DATE computeDate,                         TO_CHAR (SG.SEND_TIME, 'yyyy/MM/dd HH24:mi:ss')                            sendDate                    FROM RC_MESSAGE_LOG LG                         INNER JOIN RC_SEND_MESSAGE_LOG SG                            ON LG.MESSAGE_SEND_LOG = SG.MESSAGE_SEND_LOG                   WHERE     1 = 1                         AND LG.STEP IN ('1', '2')                         AND LG.COMUPTE_DATE >= 20171225                         AND LG.COMUPTE_DATE <= 20180201                        -- AND LG.STEP IN (?, ?)                ORDER BY messageId DESC) TMP_PAGE         WHERE ROWNUM <= 31570) WHERE ROW_ID > 31560

换一种思路:先根据条件取出rowId,然后根据rowId关联出对应的记录

SELECT LG.MESSAGE_ID messageId,         LG.PRODUCTION_ID productionId,         NVL (LG.PRODUCTION_NAME, '汇总控制')            productionName,         LG.RULE_ID ruleId,         LG.RULE_NAME ruleName,         LG.MESSAGE_CONTENT messageContent,         SUBSTR (LG.MESSAGE_CONTENT,                 0,                   INSTR (LG.MESSAGE_CONTENT,                          'br/>',                          1,                          1)                 - 2)            messageHead,         DECODE (LG.STEP,                 '0', '事前风控',                 '1', '事中监控',                 '事后巡检')            step,         LG.COMUPTE_DATE computeDate,         TO_CHAR (SG.SEND_TIME, 'yyyy/MM/dd HH24:mi:ss')            sendDate    FROM RC_MESSAGE_LOG LG         INNER JOIN RC_SEND_MESSAGE_LOG SG            ON LG.MESSAGE_SEND_LOG = SG.MESSAGE_SEND_LOG,          (SELECT rid          FROM (SELECT ROWNUM rn, t.rid                  FROM (  SELECT LG1.ROWID rid                            FROM RC_MESSAGE_LOG LG1                                INNER JOIN RC_SEND_MESSAGE_LOG SG                                ON LG1.MESSAGE_SEND_LOG = SG.MESSAGE_SEND_LOG                           where LG1.STEP IN ('1', '2')                            AND LG1.COMUPTE_DATE >= 20171225                            AND LG1.COMUPTE_DATE <= 20180201                        ORDER BY LG1.MESSAGE_ID DESC) t                 WHERE ROWNUM <= 31570)         WHERE rn > 31560) t2 WHERE LG.ROWID = t2.rid           and 1 = 1   order by LG.MESSAGE_ID desc

转载于:https://my.oschina.net/u/2611678/blog/1616920

你可能感兴趣的文章
无边框革命——平板电脑发展的必行之路
查看>>
ASP.NET中获取网站根目录和物理路径的方法
查看>>
网页中的字体对应的word字体大小对照表
查看>>
Entity States
查看>>
关闭浏览器时触发js函数
查看>>
怡红公子专属网址导航
查看>>
大厂只能拧螺丝,小厂能学最新技术? iOS程序员有话说
查看>>
Ascll
查看>>
也谈谈我面试的经历
查看>>
关于技术与业务的理解
查看>>
AS3 歌词同步
查看>>
ArcGIS放射状流向地图
查看>>
Asp.net webform scaffolding结合Generic Unit of Work & (Extensible) Repositories Framework代码生成向导...
查看>>
/etc/init.d/functions详解[转]
查看>>
xampp安装遇到的一些问题
查看>>
挺佩服老周的
查看>>
计算机视觉之--使用opencv生成简笔画小视频
查看>>
CSharp设计模式读书笔记(12):享元模式(学习难度:★★★★☆,使用频率:★☆☆☆☆)...
查看>>
CSS3 box-sizing
查看>>
FreeSWITCH检测DTMF数据的方法
查看>>