oracle分页

简介: 1.以前听网上说rowid分页比rownum快,今天特意试验了,发现rowid并不比rownum快,实验环境oracle 11g 11.

1.以前听网上说rowid分页比rownum快,今天特意试验了,发现rowid并不比rownum快,

实验环境oracle 11g 11.2.0.1.0


SQL>   SELECT *

  2      FROM SCOTT.EMP
  3     WHERE ROWID IN (SELECT RID
  4                       FROM (SELECT ROWNUM RN, RID
  5                               FROM (SELECT ROWID RID, SAL FROM SCOTT.EMP ORDER BY SAL DESC
  6                                     )
  7                              WHERE ROWNUM < 28
  8                             )
  9                      WHERE RN > 5
 10                     )
 11     ORDER BY SAL DESC;


已选择9行。




执行计划
----------------------------------------------------------
Plan hash value: 3686812265


-----------------------------------------------------------------------------------------
| Id  | Operation                    | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |          |     1 |    50 |     7  (43)| 00:00:01 |
|   1 |  SORT ORDER BY               |          |     1 |    50 |     7  (43)| 00:00:01 |
|   2 |   NESTED LOOPS               |          |     1 |    50 |     6  (34)| 00:00:01 |
|   3 |    VIEW                      | VW_NSO_1 |    14 |   168 |     4  (25)| 00:00:01 |
|   4 |     HASH UNIQUE              |          |     1 |   350 |            |          |
|*  5 |      VIEW                    |          |    14 |   350 |     4  (25)| 00:00:01 |
|*  6 |       COUNT STOPKEY          |          |       |       |            |          |
|   7 |        VIEW                  |          |    14 |   168 |     4  (25)| 00:00:01 |
|*  8 |         SORT ORDER BY STOPKEY|          |    14 |   224 |     4  (25)| 00:00:01 |
|   9 |          TABLE ACCESS FULL   | EMP      |    14 |   224 |     3   (0)| 00:00:01 |
|  10 |    TABLE ACCESS BY USER ROWID| EMP      |     1 |    38 |     1   (0)| 00:00:01 |
-----------------------------------------------------------------------------------------


Predicate Information (identified by operation id):
---------------------------------------------------


   5 - filter("RN">5)
   6 - filter(ROWNUM<28)
   8 - filter(ROWNUM<28)




统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          7  consistent gets
          0  physical reads
          0  redo size
       1085  bytes sent via SQL*Net to client
        476  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          2  sorts (memory)
          0  sorts (disk)
          9  rows processed


SQL> SELECT *
  2    FROM (SELECT T1.*, ROWNUM RN FROM (SELECT * FROM SCOTT.EMP ORDER BY SAL DESC) T1 WHERE ROWNUM < 28)
  3   WHERE RN > 5;


已选择9行。




执行计划
----------------------------------------------------------
Plan hash value: 2603316617


---------------------------------------------------------------------------------
| Id  | Operation                | Name | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------
|   0 | SELECT STATEMENT         |      |    14 |  1400 |     4  (25)| 00:00:01 |
|*  1 |  VIEW                    |      |    14 |  1400 |     4  (25)| 00:00:01 |
|*  2 |   COUNT STOPKEY          |      |       |       |            |          |
|   3 |    VIEW                  |      |    14 |  1218 |     4  (25)| 00:00:01 |
|*  4 |     SORT ORDER BY STOPKEY|      |    14 |   532 |     4  (25)| 00:00:01 |
|   5 |      TABLE ACCESS FULL   | EMP  |    14 |   532 |     3   (0)| 00:00:01 |
---------------------------------------------------------------------------------


Predicate Information (identified by operation id):
---------------------------------------------------


   1 - filter("RN">5)
   2 - filter(ROWNUM<28)
   4 - filter(ROWNUM<28)




统计信息
----------------------------------------------------------
          1  recursive calls
          0  db block gets
          6  consistent gets
          0  physical reads
          0  redo size
       1165  bytes sent via SQL*Net to client
        476  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
          9  rows processed
目录
相关文章
|
7月前
|
SQL Oracle 关系型数据库
常用数据库的分页语句(mySQL、oracle、PostgreSQL、SQL Server)
常用数据库的分页语句(mySQL、oracle、PostgreSQL、SQL Server)
|
SQL Oracle 关系型数据库
回顾JDBC之Oracle的CRUD以及分页细节
回顾JDBC之Oracle的CRUD以及分页细节
113 0
|
SQL Oracle 算法
Oracle总结【SQL细节、多表查询、分组查询、分页】下
在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了…印象中就只有基本的SQL语句和相关一些概念….写下本博文的原因就是记载着Oracle一些以前没注意到的知识点…以后或许会有用… 实例与数据库概念
309 0
Oracle总结【SQL细节、多表查询、分组查询、分页】下
|
SQL Oracle 关系型数据库
Oracle总结【SQL细节、多表查询、分组查询、分页】上
在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了…印象中就只有基本的SQL语句和相关一些概念….写下本博文的原因就是记载着Oracle一些以前没注意到的知识点…以后或许会有用… 实例与数据库概念
154 0
Oracle总结【SQL细节、多表查询、分组查询、分页】上
|
SQL Oracle 关系型数据库
Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句
最近把平时在项目中常用到的数据库分页sql总结了下。大家可以贴出分页更高效的sql语句。
199 0
|
SQL Oracle 关系型数据库
Oracle总结【SQL细节、多表查询、分组查询、分页】
前言 在之前已经大概了解过Mysql数据库和学过相关的Oracle知识点,但是太久没用过Oracle了,就基本忘了...印象中就只有基本的SQL语句和相关一些概念....写下本博文的原因就是记载着Oracle一些以前没注意到的知识点.
1467 0
|
Oracle 关系型数据库 SQL