`

Oracle分页查询的优化方案

 
阅读更多

今天看到一份资料上有讲到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
分享到:
评论

相关推荐

    报表性能优化方案之单数据集分页SQL实现层式报表

    行式引擎按页取数只适用于Oracle,mysql,hsql和sqlserver2008及以上数据库,其他数据库,如access,sqlserver2005,sqlite等必须编写分页SQL。今天我们以Access数据库为例介绍需要写分页SQL的数据库怎样利用行式的...

    海量数据库的查询优化及分页算法方案

    海量数据库的查询优化及分页算法方案.txt

    ORACLE9i_优化设计与系统调整

    第一部分 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...

    浅谈mysql使用limit分页优化方案的实现

    与Oracle和MS SqlServer相比,mysql的分页方法简单的让人想哭。 –语法: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset –举例: select * from table limit 5; --返回前5行 select * from ...

    AspNetPagerv7.4.1分页控件及Demo源码2012919

    AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...

    AspNetPager7.2分页控件及Demo源码

    AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...

    AspNetPager示例源码学习 7.2

    AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...

    ASP.Net皮肤换肤控件

    AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...

    AspNetPager控件及Demo源码 v7.4.4.rar

    AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...

    AspNetPager 7.2 7.02控件源码与示例

    AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...

    AspNetPager控件及Demo源码 v7.4.4.zip

    AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...

    AspNetPager.dll

    AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现...

    Mycat-server-1.6-RELEASE源码

    支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。 支持通过全局表,ER关系的分片策略,实现了高效的多表join...

    程序员的SQL金典6-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 联合...

    程序员的SQL金典7-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 联合...

    程序员的SQL金典3-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 联合...

    程序员的SQL金典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 联合...

Global site tag (gtag.js) - Google Analytics