`

典型的分页查询SQL

    博客分类:
  • SQL
SQL 
阅读更多

一、带排序的分页查询

这里以修改DB中的修改记录顺序排列为例,查找第9990到10000条之间的记录:

select t2.*
  from (select rownum rnum, t1.*
          from (select * from ABC p order by p.gmt_modified) t1
         where rownum <= 10000) t2
 where t2.rnum >= 9990

这里需要注意一下几点:

  1. 这是典型的3层查询结构,sql执行的顺序是由里层到外层依次执行。
  2. 第1层查询只做排序
  3. 第2层只限定查询范围的上限
  4. 第3层限定查询范围的下限

 

二、不带排序的分页查询

这里同样以修改DB中的修改记录顺序排列为例,查找第9990到10000条之间的记录(通上例完全一样,只要去掉其中第一层的排序就ok了):

select *
  from (select p.*, rownum rnum from ABC p where rownum <= 10000) t1
 where t1.rnum >= 9990

 

 三、需要级联两张表的排序分页

样例sql如下:

SELECT a.*, b.receive_fee
  FROM (SELECT t2.*
          FROM (SELECT t1.*, ROWNUM rnum
                  FROM (SELECT t.*
                          FROM beyond_trade_base t
                         WHERE seller_account = :1
                           AND gmt_create >= TO_DATE(:2, 'yyyy-mm-dd')
                           AND gmt_create < TO_DATE(:3, 'yyyy-mm-dd')
                         ORDER BY gmt_create DESC) t1
                 WHERE ROWNUM <= :4) t2
         WHERE rnum >= :5) a,
       beyond_trade_process b
 WHERE a.trade_no = b.trade_no(+)

上述写法比较高效,因为这个4层查询中,最里面的3层查询完全是排序的分页查询,两张表的关联值发生在了最外层(也就是最后一层)。

但是,悲剧的是这种高效的写法未必任何场景都可以适用。如果需要在最内层的条件筛选的时候就加上beyond_trade_process的某些字段值作为筛选条件,显然上面的写法就不行了。如果是那样的话,就需要适当的将

a.trade_no = b.trade_no(+) 的条件往内层查询移动了。当然这里这个条件越靠近外层性能会越好!因为表间级联还是很耗费性能的。

 

分享到:
评论

相关推荐

    利用标准的SQL语句实现查询记录分页

    在绝大多数的应用中,返回大量的符合条件的记录是司空见惯的,最典型的莫过于搜索了。在搜索的应用中,用户给出搜索条件,服务器查出符合条件的记录。...本文将为大家介绍如何利用标准的SQL语句实现查询记录分页。

    SQL SERVER 2000开发与管理应用实例

    本书全面系统地介绍了SQL Server开发和管理的应用技术,涉及安装和配置SQL Server、日期处理、字符处理、排序规则、编号处理、数据统计与汇总、分页处理、树形数据处理、数据导入与导出、作业、数据备份与还原、用户...

    sqlserver2000基础(高手也有用)

    7.2.4 使用SQL Server的系统存储过程处理分页 216 7.3 特殊要求的分页处理 217 7.3.1 随机显示的分页处理 217 7.3.2 分类数据的分页处理 221 第 8 章 树形数据处理 223 8.1 单编号处理法 223 8.1.1 ...

    Oracle.DBA手记_数据库诊断案例与性能优化实践

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...

    springboot-freemarker:包含框架有:SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid、Freemarker;有完整的UI、增删改查及分页,防SQL注入、XSS攻击拦截等

    它是一个典型的MVC三层框架,快速简单的上手。 springboot-freemarker 包含框架有:SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid、Freemarker; 集成示例有:增删改查及分页;防XSS、SQL注入; 数据库配置 ...

    springboot-jsp:包含框架有:SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid; 有完整的UI、增删改查及分页,防SQL注入、XSS攻击拦截等

    它是一个典型的MVC三层框架,快速简单的上手。 springboot-jsp 包含框架有:SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid; 集成示例有:增删改查及分页;防XSS、SQL注入; 前端采用的jsp、springboot对jsp...

    Oracle DBA手记:数据库诊断案例与性能优化实践

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...

    Oracle_DBA手记1-数据库诊断案例与性能优化实践

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...

    Oracle.DBA手记1--数据库诊断案例与性能优化实践

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...

    [Oracle.DBA手记_数据库诊断案例与性能优化实践].《Oracle.DBA手记》编委会.扫描版

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...

    《Oracle DBA手记》

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及Oracle典型错误的分析和诊断,各种SQL优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...

    《Oracle DBA手记》试读样章下载

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及Oracle典型错误的分析和诊断,各种SQL优化方法(如调整索引、处理表碎片、优化分页查询、改善执行...

    Oracle DBA 手记 数据库诊断案例与性能优化实践 3/3

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及Oracle典型错误的分析和诊断,各种SQL优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...

    Oracle DBA 手记 数据库诊断案例与性能优化实践 1/3

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及Oracle典型错误的分析和诊断,各种SQL优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...

    Oracle DBA 手记 数据库诊断案例与性能优化实践 2/3

    本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及Oracle典型错误的分析和诊断,各种SQL优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...

    C#.net_经典编程例子400个

    96 实例077 带复选框的树状菜单 98 2.9 其他控件典型应用 100 实例078 TrackBar的简单应用 100 实例079 SplitContainer的应用 102 实例080 MaskedTextBox控件的简单应用 103 实例081 ...

    HA租房网(三层+MVC4)管理系统源码 HAMVCZuFangMS.rar

    这是一款非常典型的租房网后台管理系统源码,采用的典型的三层架构和MVC相结合的技术,非常实用, 界面也比较美观,非常适合新手初学MVC的朋友们使用,欢迎下载哦。 二、功能介绍 该源码作为MVC4入门项目,但是...

    C#程序开发范例宝典(第2版).part13

    实例081 DataGridView控件的分页功能 108 实例082 从DataGridView控件拖放数据至TreeView控件 113 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为...

    C#程序开发范例宝典(第2版).part08

    实例081 DataGridView控件的分页功能 108 实例082 从DataGridView控件拖放数据至TreeView控件 113 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为...

Global site tag (gtag.js) - Google Analytics