下面统计一下这张表中的记录数:

SQL> select count(*) from customers;

COUNT(*)

----------

55500

已用时间:  00: 00: 00.01

执行计划

----------------------------------------------------------------------------------------------

Plan hash value: 237477902

----------------------------------------------------------------------------------------------

| Id  | Operation                    | Name                | Rows  | Cost (%CPU)| Time    |

----------------------------------------------------------------------------------------------

|  0 | SELECT STATEMENT              |                      |    1 |    3  (0)| 00:00:01 |

|  1 |  SORT AGGREGATE              |                      |    1 |            |          |

|  2 |  BITMAP CONVERSION COUNT    |                      | 55500 |    3  (0)| 00:00:01 |

|  3 |    BITMAP INDEX FAST FULL SCAN| CUSTOMERS_GENDER_BIX |      |            |          |

----------------------------------------------------------------------------------------------

统计信息

----------------------------------------------------------

0  recursive calls

0  db block gets

6  consistent gets

0  physical reads

0  redo size

413  bytes sent via SQL*Net to client

400  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

1  rows processed

首先比较两种分页方法的区别:

SQL> SET AUTOT ON

SQL> set timing on

SQL> col CUST_LAST_NAME format a16;

SQL> col CUST_FIRST_NAME format a16;

以SYS用户执行下面的SQL Plus命令(注意不要在任何重要的生产环境中执行这两条命令):

SQL> show user;

USER 为 "SYS"

SQL> alter system flush shared_pool;

系统已更改。

SQL> alter system flush buffer_cache;

系统已更改。

SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'CUSTOMERS')

PL/SQL 过程已成功完成。

下面比较两种分页算法的效率:

SQL> select CUST_ID,

2        CUST_FIRST_NAME,

3        CUST_LAST_NAME,

4        CUST_GENDER,

5        CUST_YEAR_OF_BIRTH,

6        CUST_CITY,

7        CUST_CITY_ID,

8        COUNTRY_ID

9    from (select rownum rn,

10                CUST_ID,

11                CUST_FIRST_NAME,

12                CUST_LAST_NAME,

13                CUST_GENDER,

14                CUST_YEAR_OF_BIRTH,

15                CUST_CITY,

16                CUST_CITY_ID,

17                COUNTRY_ID

18            from (select CUST_ID,

19                        CUST_FIRST_NAME,

20                        CUST_LAST_NAME,

21                        CUST_GENDER,

22                        CUST_YEAR_OF_BIRTH,

23                        CUST_CITY,

24                        CUST_CITY_ID,

25                        COUNTRY_ID

26                    from customers))

27  where rn between 11 and 20;

CUST_ID CUST_FIRST_NAME  CUST_LAST_NAME  C CUST_YEAR_OF_BIRTH CUST_CITY                      CUST_CITY_ID COUNTRY_ID

---------- ---------------- ---------------- - ------------------ ------------------------------ ------------ ----------

35227 Abigail          Ruddy            M              1948 Lelystad                          51793        52770

36117 Abner            Everett          M              1954 Wolverhampton                      52514        52789

39672 Abner            Everett          M              1975 Murnau                            51934        52776

43228 Abner            Everett          M              1957 Los Angeles                        51806        52790

25470 Abner            Everett          M              1966 Stuttgart                          52331        52776

47006 Abner            Everett          M              1985 Montara                            51919        52790

50561 Abner            Everett          M              1960 Neuss                              51975        52776

4117 Abner            Everett          M              1972 Clermont-l'Herault                51329        52779

7673 Abner            Everett          M              1988 Schwaebisch Gmuend                52300        52776

11228 Abner            Everett          M              1956 Ingolstadt                        51680        52776

已选择10行。

已用时间:  00: 00: 00.22

执行计划

----------------------------------------------------------

Plan hash value: 4059343527

---------------------------------------------------------------------------------

| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time    |

---------------------------------------------------------------------------------

|  0 | SELECT STATEMENT    |          | 55500 |  6449K|  333  (2)| 00:00:04 |

|*  1 |  VIEW              |          | 55500 |  6449K|  333  (2)| 00:00:04 |

|  2 |  COUNT            |          |      |      |            |          |

|  3 |    TABLE ACCESS FULL| CUSTOMERS | 55500 |  2493K|  333  (2)| 00:00:04 |

---------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter("RN"<=20 AND "RN">=11)

统计信息

----------------------------------------------------------

1  recursive calls

0  db block gets

1460  consistent gets

0  physical reads

0  redo size

1250  bytes sent via SQL*Net to client

400  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

10  rows processed

SQL>

SQL> select

2        CUST_ID,

3        CUST_FIRST_NAME,

4        CUST_LAST_NAME,

5        CUST_GENDER,

6        CUST_YEAR_OF_BIRTH,

7        CUST_CITY,

8        CUST_CITY_ID,

9        COUNTRY_ID

10    from (select rownum rn,

11                CUST_ID,

12                CUST_FIRST_NAME,

13                CUST_LAST_NAME,

14                CUST_GENDER,

15                CUST_YEAR_OF_BIRTH,

16                CUST_CITY,

17                CUST_CITY_ID,

18                COUNTRY_ID

19            from (select CUST_ID,

20                        CUST_FIRST_NAME,

21                        CUST_LAST_NAME,

22                        CUST_GENDER,

23                        CUST_YEAR_OF_BIRTH,

24                        CUST_CITY,

25                        CUST_CITY_ID,

26                        COUNTRY_ID

27                    from customers)

28          where rownum <= 20)

29  where rn >= 11;

CUST_ID CUST_FIRST_NAME  CUST_LAST_NAME  C CUST_YEAR_OF_BIRTH CUST_CITY                      CUST_CITY_ID COUNTRY_I

---------- ---------------- ---------------- - ------------------ ------------------------------ ------------ ---------

35227 Abigail          Ruddy            M              1948 Lelystad                          51793        5277

36117 Abner            Everett          M              1954 Wolverhampton                      52514        5278

39672 Abner            Everett          M              1975 Murnau                            51934        5277

43228 Abner            Everett          M              1957 Los Angeles                        51806        5279

25470 Abner            Everett          M              1966 Stuttgart                          52331        5277

47006 Abner            Everett          M              1985 Montara                            51919        5279

50561 Abner            Everett          M              1960 Neuss                              51975        5277

4117 Abner            Everett          M              1972 Clermont-l'Herault                51329        5277

7673 Abner            Everett          M              1988 Schwaebisch Gmuend                52300        5277

11228 Abner            Everett          M              1956 Ingolstadt                        51680        5277

已选择10行。

已用时间:  00: 00: 00.10

执行计划

----------------------------------------------------------

Plan hash value: 4287989439

---------------------------------------------------------------------------------

| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time    |

---------------------------------------------------------------------------------

|  0 | SELECT STATEMENT    |          |    20 |  2380 |    2  (0)| 00:00:01 |

|*  1 |  VIEW              |          |    20 |  2380 |    2  (0)| 00:00:01 |

|*  2 |  COUNT STOPKEY    |          |      |      |            |          |

|  3 |    TABLE ACCESS FULL| CUSTOMERS |    20 |  920 |    2  (0)| 00:00:01 |

---------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter("RN">=11)

2 - filter(ROWNUM<=20)

统计信息

----------------------------------------------------------

373  recursive calls

0  db block gets

141  consistent gets

9  physical reads

0  redo size

1250  bytes sent via SQL*Net to client

400  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

2  sorts (memory)

0  sorts (disk)

10  rows processed

二者执行效率相差很大,一个需要1460多逻辑读,而另一个只需要141个逻辑读。观察二者的执行计划可以发现,两个执行计划唯一的区别就是第二

个查询在COUNT这步使用了STOPKEY,也就是说,Oracle将ROWNUM <= 20推入到查询内层,当符合查询的条件的记录达到STOPKEY的值,则Oracle结

束查询。

因此,可以预见,采用第二种方式,在翻页的开始部分查询速度很快,越到后面,效率越低,当翻到最后一页,效率应该和第一种方式接近。

SQL>  select

2        CUST_ID,

3        CUST_FIRST_NAME,

4        CUST_LAST_NAME,

5        CUST_GENDER,

6        CUST_YEAR_OF_BIRTH,

7        CUST_CITY,

8        CUST_CITY_ID,

9        COUNTRY_ID

10    from (select rownum rn,

11                CUST_ID,

12                CUST_FIRST_NAME,

13                CUST_LAST_NAME,

14                CUST_GENDER,

15                CUST_YEAR_OF_BIRTH,

16                CUST_CITY,

17                CUST_CITY_ID,

18                COUNTRY_ID

19            from (select CUST_ID,

20                        CUST_FIRST_NAME,

21                        CUST_LAST_NAME,

22                        CUST_GENDER,

23                        CUST_YEAR_OF_BIRTH,

24                        CUST_CITY,

25                        CUST_CITY_ID,

26                        COUNTRY_ID

27                    from customers)

28          where rownum <= 55500)

29  where rn >= 55490;

CUST_ID CUST_FIRST_NAME  CUST_LAST_NAME  C CUST_YEAR_OF_BIRTH CUST_CITY                      CUST_CITY_ID COUNTR

---------- ---------------- ---------------- - ------------------ ------------------------------ ------------ ------

101789 Pavani          Krishnan        M              1947 Lowndesville                      51807        5

100115 Grace            Carbery          M              1981 Frederick                          51519        5

104365 Payton          Stengard        F              1981 Plains                            52111        5

101876 Margaret        Dadashev        F              1977 Hiseville                          51663        5

103405 Abbie            Anderson        M              1975 Chieflake                          51325        5

100364 Jordan          Zwolinsky        F              1970 Molino                            51917        5

104496 Sydney          Tang            F              1947 Evinston                          51459        5

102169 Boriana          Cay              M              1944 Orlinda                            52038        5

104252 Jade            Taft            M              1976 Norman                            51986        5

100680 Joshua          Prabu            M              1954 Cleveland                          51330        5

100055 Andrew          Clark            F              1978 Duncan                            51402        5

已选择11行。

已用时间:  00: 00: 00.28

执行计划

----------------------------------------------------------

Plan hash value: 4287989439

---------------------------------------------------------------------------------

| Id  | Operation          | Name      | Rows  | Bytes | Cost (%CPU)| Time    |

---------------------------------------------------------------------------------

|  0 | SELECT STATEMENT    |          | 55500 |  6449K|  333  (2)| 00:00:04 |

|*  1 |  VIEW              |          | 55500 |  6449K|  333  (2)| 00:00:04 |

|*  2 |  COUNT STOPKEY    |          |      |      |            |          |

|  3 |    TABLE ACCESS FULL| CUSTOMERS | 55500 |  2493K|  333  (2)| 00:00:04 |

---------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

1 - filter("RN">=55490)

2 - filter(ROWNUM<=55500)

统计信息

----------------------------------------------------------

1  recursive calls

0  db block gets

1460  consistent gets

1449  physical reads

0  redo size

1349  bytes sent via SQL*Net to client

400  bytes received via SQL*Net from client

2  SQL*Net roundtrips to/from client

0  sorts (memory)

0  sorts (disk)

11  rows processed

SQL>

注意在执行计划的统计信息中出现了 1460  consistent gets

oracle 分页语句效率高,Oracle 10g SQL分页查询语句和效率分析相关推荐

  1. oracle sql 分区查询语句_Oracle 分区概述

    一. 概念 分区是将一个表或者索引物理地分解成多个更小的部分.对于访问数据库的应用来看,逻辑上看只有一个表或者索引,因为访问和普通表或索引一模一样.但物理上这个表可能被分成了数十个独立的分区,每一个分 ...

  2. mysql的查询语句大全_sql语句(sql数据库查询语句大全)

    sql语句 结构化查询语言(StructuredQueryLanguage)缩写为SQL.结构化查询语言是一种数据库查询和编程语言,用于访问数据以及查询,更新和管理关系数据库系统: 程序功能 创建数据 ...

  3. MySQL学习记录 (二) ----- SQL数据查询语句(DQL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  4. mysql五补充部分:SQL逻辑查询语句执行顺序

    mysql五补充部分:SQL逻辑查询语句执行顺序一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SE ...

  5. mysql基础10(SQL逻辑查询语句执行顺序)

    SQL语句定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <rig ...

  6. 如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集

    如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括: 如 ...

  7. sqlserver 指定的网络名不再可用_50个比较实用的SQL Server查询语句(1)

    在本文中,我将解释一些通用的SQL查询.我认为每个开发人员都应该了解这些查询.这些查询与SQL的任何特定主题都无关.但是了解这些查询可以解决一些复杂的任务,并且可以在许多场景中使用. 查询1:检索所有 ...

  8. mysql查询第二个字母为a_MSSQL_关于SQL Server查询语句的使用,一.查询第二个字母是t或者a的 - phpStudy...

    关于SQL Server查询语句的使用 一.查询第二个字母是t或者a的雇员的全部信息 select * from employees where firstname like '_[t,a]%' 注意 ...

  9. SQL 基本查询语句

    这篇博客主要介绍SQl基本查询语句 下面是查询基于的表 Student表 SC表 Course表 下面是具体的代码 1.创建表CREATE TABLE Student( //创建学生表 Sno CHA ...

  10. oracle sql 分区查询语句_oracle11g 表分区后的查询语句如何知道是否进行了全表扫描...

    2019-05-10 回答 1. 对返回的行无任何限定条件,即没有where 子句 2. 未对数据表与任何索引主列相对应的行限定条件 例如:在city-state-zip列创建了三列复合索引,那么仅对 ...

最新文章

  1. 【动态规划专题】数字三角形模型
  2. R语言入门第五集 实验四:数据分析
  3. mysql switch binlog_如何使用 Golang 处理 MySQL 的 binlog
  4. VTK:几何对象之Tetrahedron
  5. 据库中事务、会话、线程这几个概念是什么关系
  6. 大数据每日哔哔、新征程
  7. 安卓应用安全指南 5.5.3 处理隐私数据 高级话题
  8. 【转】socket提交http表单 [C++]
  9. 不定期总结程序员常见误区
  10. 老男孩Linux课程职场高薪秘籍
  11. “微信之父”张小龙:微信背后的产品观
  12. wordpress建站我们如何选择虚拟主机和VPS服务器呢?
  13. DB2导出 mysql导入_db2数据库导入导出数据
  14. 安卓圆形头像制作两种方法。
  15. java获取excel行数_Java如何利用POI读取Excel行数
  16. js检测PDF插件 Adobe Reader是否安装
  17. airpods链接mac弹窗_AirPods怎么连接Mac AirPods连接Mac教程
  18. 816墨盒计算机无法与,816墨盒怎么加墨 816墨盒加墨方法及注意问题【详解】
  19. 华为人报:实事求是科研方向与20年艰苦努力
  20. arcgis如何打开tif_详解如何使用ArcGIS生成高程点

热门文章

  1. DirectX11 Effect特效文件
  2. linux系统编程课程改革,项目驱动的Linux操作系统课程教学改革
  3. 浅析智能化指挥信息系统发展
  4. 操作符 , | , ^,<<,>>
  5. 电商积分支付系统构建经验与总结
  6. 2021双十一活动:华为云服务器体验活动,免费领取50G云硬盘,邀请参加再送价值200元华为无线鼠标键盘套装
  7. 特征选择方法之主成分分析
  8. 《无懈可击的Web设计》_灵活的文字
  9. 【论文解读 ESWC 2018 | R-GCN】Modeling Relational Data with Graph Convolutional Networks
  10. C语言数组初始化为非0值