一、带排序的分页查询
这里以修改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
这里需要注意一下几点:
- 这是典型的3层查询结构,sql执行的顺序是由里层到外层依次执行。
- 第1层查询只做排序
- 第2层只限定查询范围的上限
- 第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 Server开发和管理的应用技术,涉及安装和配置SQL Server、日期处理、字符处理、排序规则、编号处理、数据统计与汇总、分页处理、树形数据处理、数据导入与导出、作业、数据备份与还原、用户...
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典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...
它是一个典型的MVC三层框架,快速简单的上手。 springboot-freemarker 包含框架有:SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid、Freemarker; 集成示例有:增删改查及分页;防XSS、SQL注入; 数据库配置 ...
它是一个典型的MVC三层框架,快速简单的上手。 springboot-jsp 包含框架有:SpringBoot、SpringMVC、MyBaits、Bootstrap3、Druid; 集成示例有:增删改查及分页;防XSS、SQL注入; 前端采用的jsp、springboot对jsp...
本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...
本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...
本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...
本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及oracle典型错误的分析和诊断,各种sql优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...
本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及Oracle典型错误的分析和诊断,各种SQL优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...
本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及Oracle典型错误的分析和诊断,各种SQL优化方法(如调整索引、处理表碎片、优化分页查询、改善执行...
本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及Oracle典型错误的分析和诊断,各种SQL优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...
本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及Oracle典型错误的分析和诊断,各种SQL优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...
本书由多位工作在数据库维护一线的工程师合著而成,包含了精心挑选的数据库诊断案例与性能优化实践经验,内容涉及Oracle典型错误的分析和诊断,各种SQL优化方法(包括调整索引,处理表碎片,优化分页查询,改善执行...
96 实例077 带复选框的树状菜单 98 2.9 其他控件典型应用 100 实例078 TrackBar的简单应用 100 实例079 SplitContainer的应用 102 实例080 MaskedTextBox控件的简单应用 103 实例081 ...
这是一款非常典型的租房网后台管理系统源码,采用的典型的三层架构和MVC相结合的技术,非常实用, 界面也比较美观,非常适合新手初学MVC的朋友们使用,欢迎下载哦。 二、功能介绍 该源码作为MVC4入门项目,但是...
实例081 DataGridView控件的分页功能 108 实例082 从DataGridView控件拖放数据至TreeView控件 113 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为...
实例081 DataGridView控件的分页功能 108 实例082 从DataGridView控件拖放数据至TreeView控件 113 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为...