今天看到一份资料上有讲到Oracle分页处理时的查询优化方式,其思路是:对于要查询多列数据的一个分页查询语句,可以在内部的Oracle查询rownum时,不查询出所有要需要的列,而是查询一个rowid,再用一个表连接的方式,来查询所需要的列,这样就不会使用太多的*来查询,Oracle的sql语句解析器也就不会在解析sql语句时,消耗更多的资源,例子如下:
一般的查询分页查询方式是:
SELECT * FROM
( SELECT a.* ,ROWNUM rn FROM --取得rownum值
(SELECT t.* FROM dept t ORDER BY t.deptno)a --查询整表的数据列,并按表某一个字段进行排序
WHERE ROWNUM<20) --对rownum大于20的进行过滤
WHERE rn>2 --对rownum大于2的进行过滤
现在新的做法是:
SELECT t.* FROM dept t, --表连接,关联查询
(SELECT rd FROM ( --取得所有的rowid
SELECT rd,rn FROM
(SELECT ROWID rd,ROWNUM rn FROM dept ORDER BY deptno) --查询整表rowid和rownum,并按进行排序
WHERE rn<20) --过滤rownum大于20的数据
WHERE rn >2) t1 --过滤rownum小于2的数据
WHERE t.ROWID = t1.rd
相关推荐
行式引擎按页取数只适用于Oracle,mysql,hsql和sqlserver2008及以上数据库,其他数据库,如access,sqlserver2005,sqlite等必须编写分页SQL。今天我们以Access数据库为例介绍需要写分页SQL的数据库怎样利用行式的...
海量数据库的查询优化及分页算法方案.txt
第一部分 ORACLE系统优化基本知识 23 第1章 ORACLE结构回顾 23 §1.1 Oracle数据库结构 23 §1.1.1 Oracle数据字典 23 §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1...
与Oracle和MS SqlServer相比,mysql的分页方法简单的让人想哭。 –语法: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset –举例: select * from table limit 5; --返回前5行 select * from ...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...
支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join...
4.4.6 数据库分页 4.5 抑制数据重复 4.6 计算字段 4.6.1 常量字段 4.6.2 字段间的计算 4.6.3 数据处理函数 4.6.4 字符串的拼接 4.6.5 计算字段的其他用途 4.7 不从实体表中取的数据 4.8 联合...
4.4.6 数据库分页 4.5 抑制数据重复 4.6 计算字段 4.6.1 常量字段 4.6.2 字段间的计算 4.6.3 数据处理函数 4.6.4 字符串的拼接 4.6.5 计算字段的其他用途 4.7 不从实体表中取的数据 4.8 联合...
4.4.6 数据库分页 4.5 抑制数据重复 4.6 计算字段 4.6.1 常量字段 4.6.2 字段间的计算 4.6.3 数据处理函数 4.6.4 字符串的拼接 4.6.5 计算字段的其他用途 4.7 不从实体表中取的数据 4.8 联合...
4.4.6 数据库分页 4.5 抑制数据重复 4.6 计算字段 4.6.1 常量字段 4.6.2 字段间的计算 4.6.3 数据处理函数 4.6.4 字符串的拼接 4.6.5 计算字段的其他用途 4.7 不从实体表中取的数据 4.8 联合...