ITPub博客

首页 > 数据库 > Oracle > 分页查询,分页列最好非空且创建索引。

分页查询,分页列最好非空且创建索引。

Oracle 作者:daydayupliq 时间:2015-03-12 11:49:42 0 删除 编辑

11:34:48 SQL> set autot off
11:34:51 SQL> set autot traceonly
11:34:56 SQL> drop table t;

表已删除。

已用时间:  00: 00: 01.03

11:35:22 SQL> purge recyclebin;

回收站已清空。

已用时间:  00: 00: 00.54
11:35:36 SQL> set time on timing on
11:36:05 SQL> create table t as select * from dba_objects;

表已创建。

已用时间:  00: 00: 00.49
11:36:21 SQL> insert into t select * from t;

已创建 86747 行。

已用时间:  00: 00: 01.02

执行计划
----------------------------------------------------------                                                                                                                                           

 
Plan hash value: 1601196873                                                                                                                                                                          

 
                                                                                                                                                                                                     

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

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

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

 
|   0 | INSERT STATEMENT         |      |   330K|    65M|   695   (1)| 00:00:09 |                                                                                                                    

 
|   1 |  LOAD TABLE CONVENTIONAL | T    |       |       |            |          |                                                                                                                    

 
|   2 |   TABLE ACCESS FULL      | T    |   330K|    65M|   695   (1)| 00:00:09 |                                                                                                                    

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

 
                                                                                                                                                                                                     

 
Note                                                                                                                                                                                                 

 
-----                                                                                                                                                                                                

 
   - dynamic sampling used for this statement (level=2)                                                                                                                                              

 


统计信息
----------------------------------------------------------                                                                                                                                           

 
         33  recursive calls                                                                                                                                                                         

 
      11221  db block gets                                                                                                                                                                           

 
       2784  consistent gets                                                                                                                                                                         

 
       1239  physical reads                                                                                                                                                                          

 
   10091044  redo size                                                                                                                                                                               

 
        851  bytes sent via SQL*Net to client                                                                                                                                                        

 
        786  bytes received via SQL*Net from client                                                                                                                                                  

 
          3  SQL*Net roundtrips to/from client                                                                                                                                                       

 
          2  sorts (memory)                                                                                                                                                                          

 
          0  sorts (disk)                                                                                                                                                                            

 
      86747  rows processed                                                                                                                                                                          

 

11:37:53 SQL> set autot off;
11:38:08 SQL> insert into t select * from t;

已创建 173494 行。

已用时间:  00: 00: 00.23
11:38:12 SQL> /

已创建 346988 行。

已用时间:  00: 00: 02.68
11:38:30 SQL> commit;

提交完成。

已用时间:  00: 00: 00.06
11:38:34 SQL> insert into t select * from t;

已创建 693976 行。

已用时间:  00: 00: 04.27
11:38:43 SQL> commit;

提交完成。

已用时间:  00: 00: 00.01
11:38:47 SQL> create index idx_t_object_name on t(object_name);

索引已创建。

已用时间:  00: 00: 06.78
11:39:02 SQL> desc t;
 名称                                                                                                              是否为空? 类型
 ----------------------------------------------------------------------------------------------------------------- --------

----------------------------------------------------------------------------
 OWNER                                                                                                                      VARCHAR2(30)
 OBJECT_NAME                                                                                                                VARCHAR2(128)
 SUBOBJECT_NAME                                                                                                             VARCHAR2(30)
 OBJECT_ID                                                                                                                  NUMBER
 DATA_OBJECT_ID                                                                                                             NUMBER
 OBJECT_TYPE                                                                                                                VARCHAR2(19)
 CREATED                                                                                                                    DATE
 LAST_DDL_TIME                                                                                                              DATE
 TIMESTAMP                                                                                                                  VARCHAR2(19)
 STATUS                                                                                                                     VARCHAR2(7)
 TEMPORARY                                                                                                                  VARCHAR2(1)
 GENERATED                                                                                                                  VARCHAR2(1)
 SECONDARY                                                                                                                  VARCHAR2(1)
 NAMESPACE                                                                                                                  NUMBER
 EDITION_NAME                                                                                                               VARCHAR2(30)


11:39:16 SQL> execute dbms_stats.gather_table_stats(ownname => 'SCOTT',tabname => 'T',estimate_percent => null ,method_opt => 'for all indexed columns' ,cascade => true);

PL/SQL 过程已成功完成。

已用时间:  00: 00: 07.62
11:39:35 SQL> set autot traceonly
11:39:38 SQL> SELECT *
11:39:44   2   FROM   (SELECT A.*, ROWNUM RN FROM (SELECT * FROM T ORDER BY OBJECT_NAME DESC) A WHERE ROWNUM < 16)
11:39:44   3  WHERE  RN >=1;

已选择15行。

已用时间:  00: 00: 00.49

执行计划
----------------------------------------------------------                                                                                                                                           

 
Plan hash value: 882605040                                                                                                                                                                           

 
                                                                                                                                                                                                     

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

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

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

 
|   0 | SELECT STATEMENT         |      |    15 |  3300 |       | 36391   (1)| 00:07:17 |                                                                                                            

 
|*  1 |  VIEW                    |      |    15 |  3300 |       | 36391   (1)| 00:07:17 |                                                                                                            

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

 
|   3 |    VIEW                  |      |  1387K|   273M|       | 36391   (1)| 00:07:17 |                                                                                                            

 
|*  4 |     SORT ORDER BY STOPKEY|      |  1387K|   129M|   177M| 36391   (1)| 00:07:17 |                                                                                                            

 
|   5 |      TABLE ACCESS FULL   | T    |  1387K|   129M|       |  5423   (1)| 00:01:06 |                                                                                                            

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

 
                                                                                                                                                                                                     

 
Predicate Information (identified by operation id):                                                                                                                                                  

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

 
                                                                                                                                                                                                     

 
   1 - filter("RN">=1)                                                                                                                                                                               

 
   2 - filter(ROWNUM<16)                                                                                                                                                                             

 
   4 - filter(ROWNUM<16)                                                                                                                                                                             

 


统计信息
----------------------------------------------------------                                                                                                                                           

 
          1  recursive calls                                                                                                                                                                         

 
          0  db block gets                                                                                                                                                                           

 
      19924  consistent gets                                                                                                                                                                         

 
          0  physical reads                                                                                                                                                                          

 
          0  redo size                                                                                                                                                                               

 
       1970  bytes sent via SQL*Net to client                                                                                                                                                        

 
        524  bytes received via SQL*Net from client                                                                                                                                                  

 
          2  SQL*Net roundtrips to/from client                                                                                                                                                       

 
          1  sorts (memory)                                                                                                                                                                          

 
          0  sorts (disk)                                                                                                                                                                            

 
         15  rows processed                                                                                                                                                                          

 

11:40:15 SQL> alter table t modify object_name not null;

表已更改。

已用时间:  00: 00: 00.10

11:40:22 SQL> desc t;
 名称                                                                                                              是否为空? 类型
 ----------------------------------------------------------------------------------------------------------------- --------

----------------------------------------------------------------------------
 OWNER                                                                                                                      VARCHAR2(30)
 OBJECT_NAME                                                                                                       NOT NULL VARCHAR2(128)
 SUBOBJECT_NAME                                                                                                             VARCHAR2(30)
 OBJECT_ID                                                                                                                  NUMBER
 DATA_OBJECT_ID                                                                                                             NUMBER
 OBJECT_TYPE                                                                                                                VARCHAR2(19)
 CREATED                                                                                                                    DATE
 LAST_DDL_TIME                                                                                                              DATE
 TIMESTAMP                                                                                                                  VARCHAR2(19)
 STATUS                                                                                                                     VARCHAR2(7)
 TEMPORARY                                                                                                                  VARCHAR2(1)
 GENERATED                                                                                                                  VARCHAR2(1)
 SECONDARY                                                                                                                  VARCHAR2(1)
 NAMESPACE                                                                                                                  NUMBER
 EDITION_NAME                                                                                                               VARCHAR2(30)

11:40:28 SQL> SELECT *
11:40:36   2   FROM   (SELECT A.*, ROWNUM RN FROM (SELECT * FROM T ORDER BY OBJECT_NAME DESC) A WHERE ROWNUM < 16)
11:40:36   3  WHERE  RN >=1;

已选择15行。

已用时间:  00: 00: 00.00

执行计划
----------------------------------------------------------                                                                                                                                           

 
Plan hash value: 3229612337                                                                                                                                                                          

 
                                                                                                                                                                                                     

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

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

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

 
|   0 | SELECT STATEMENT               |                   |    15 |  3300 |    14   (0)| 00:00:01 |                                                                                                 

 
|*  1 |  VIEW                          |                   |    15 |  3300 |    14   (0)| 00:00:01 |                                                                                                 

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

 
|   3 |    VIEW                        |                   |    15 |  3105 |    14   (0)| 00:00:01 |                                                                                                 

 
|   4 |     TABLE ACCESS BY INDEX ROWID| T                 |  1387K|   129M|    14   (0)| 00:00:01 |                                                                                                 

 
|   5 |      INDEX FULL SCAN DESCENDING| IDX_T_OBJECT_NAME |    15 |       |     3   (0)| 00:00:01 |                                                                                                 

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

 
                                                                                                                                                                                                     

 
Predicate Information (identified by operation id):                                                                                                                                                  

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

 
                                                                                                                                                                                                     

 
   1 - filter("RN">=1)                                                                                                                                                                               

 
   2 - filter(ROWNUM<16)                                                                                                                                                                             

 


统计信息
----------------------------------------------------------                                                                                                                                           

 
         56  recursive calls                                                                                                                                                                         

 
          0  db block gets                                                                                                                                                                           

 
         49  consistent gets                                                                                                                                                                         

 
          0  physical reads                                                                                                                                                                          

 
          0  redo size                                                                                                                                                                               

 
       1970  bytes sent via SQL*Net to client                                                                                                                                                        

 
        524  bytes received via SQL*Net from client                                                                                                                                                  

 
          2  SQL*Net roundtrips to/from client                                                                                                                                                       

 
          6  sorts (memory)                                                                                                                                                                          

 
          0  sorts (disk)                                                                                                                                                                            

 
         15  rows processed                                                                                                                                                                          

 

11:40:36 SQL> SELECT *
11:40:46   2  FROM   (SELECT A.*, ROWNUM RN
11:40:46   3           FROM   (SELECT * FROM T ORDER BY OBJECT_NAME DESC) A
11:40:46   4            WHERE  ROWNUM < 30000)
11:40:46   5  WHERE  RN >= 30000 - 15;

已选择15行。

已用时间:  00: 00: 00.07

执行计划
----------------------------------------------------------                                                                                                                                           

 
Plan hash value: 3229612337                                                                                                                                                                          

 
                                                                                                                                                                                                     

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

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

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

 
|   0 | SELECT STATEMENT               |                   | 29999 |  6445K| 20611   (1)| 00:04:08 |                                                                                                 

 
|*  1 |  VIEW                          |                   | 29999 |  6445K| 20611   (1)| 00:04:08 |                                                                                                 

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

 
|   3 |    VIEW                        |                   | 29999 |  6064K| 20611   (1)| 00:04:08 |                                                                                                 

 
|   4 |     TABLE ACCESS BY INDEX ROWID| T                 |  1387K|   129M| 20611   (1)| 00:04:08 |                                                                                                 

 
|   5 |      INDEX FULL SCAN DESCENDING| IDX_T_OBJECT_NAME | 29999 |       |   152   (0)| 00:00:02 |                                                                                                 

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

 
                                                                                                                                                                                                     

 
Predicate Information (identified by operation id):                                                                                                                                                  

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

 
                                                                                                                                                                                                     

 
   1 - filter("RN">=29985)                                                                                                                                                                           

 
   2 - filter(ROWNUM<30000)                                                                                                                                                                          

 


统计信息
----------------------------------------------------------                                                                                                                                           

 
          1  recursive calls                                                                                                                                                                         

 
          0  db block gets                                                                                                                                                                           

 
      15681  consistent gets                                                                                                                                                                         

 
          0  physical reads                                                                                                                                                                          

 
          0  redo size                                                                                                                                                                               

 
       2266  bytes sent via SQL*Net to client                                                                                                                                                        

 
        524  bytes received via SQL*Net from client                                                                                                                                                  

 
          2  SQL*Net roundtrips to/from client                                                                                                                                                       

 
          0  sorts (memory)                                                                                                                                                                          

 
          0  sorts (disk)                                                                                                                                                                            

 
         15  rows processed                                                                                                                                                                          

 

11:40:47 SQL> SELECT T.*
11:41:12   2  FROM   T
11:41:12   3  WHERE  ROWID IN (SELECT RID
11:41:12   4                    FROM   (SELECT A.RID, ROWNUM RN
11:41:12   5                             FROM   (SELECT ROWID RID FROM T ORDER BY OBJECT_NAME DESC) A
11:41:12   6                             WHERE  ROWNUM < 30000)
11:41:12   7                    WHERE  RN >= 30000 - 15);

已选择15行。

已用时间:  00: 00: 00.04

执行计划
----------------------------------------------------------                                                                                                                                           

 
Plan hash value: 695960827                                                                                                                                                                           

 
                                                                                                                                                                                                     

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

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

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

 
|   0 | SELECT STATEMENT                 |                   |     1 |   110 |   155   (2)| 00:00:02 |                                                                                               

 
|   1 |  NESTED LOOPS                    |                   |     1 |   110 |   155   (2)| 00:00:02 |                                                                                               

 
|   2 |   VIEW                           | VW_NSO_1          | 29999 |   351K|   152   (0)| 00:00:02 |                                                                                               

 
|   3 |    HASH UNIQUE                   |                   |     1 |   732K|            |          |                                                                                               

 
|*  4 |     VIEW                         |                   | 29999 |   732K|   152   (0)| 00:00:02 |                                                                                               

 
|*  5 |      COUNT STOPKEY               |                   |       |       |            |          |                                                                                               

 
|   6 |       VIEW                       |                   | 29999 |   351K|   152   (0)| 00:00:02 |                                                                                               

 
|   7 |        INDEX FULL SCAN DESCENDING| IDX_T_OBJECT_NAME |  1387K|    48M|   152   (0)| 00:00:02 |                                                                                               

 
|   8 |   TABLE ACCESS BY USER ROWID     | T                 |     1 |    98 |     1   (0)| 00:00:01 |                                                                                               

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

 
                                                                                                                                                                                                     

 
Predicate Information (identified by operation id):                                                                                                                                                  

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

 
                                                                                                                                                                                                     

 
   4 - filter("RN">=29985)                                                                                                                                                                           

 
   5 - filter(ROWNUM<30000)                                                                                                                                                                          

 


统计信息
----------------------------------------------------------                                                                                                                                           

 
          1  recursive calls                                                                                                                                                                         

 
          0  db block gets                                                                                                                                                                           

 
        175  consistent gets                                                                                                                                                                         

 
          0  physical reads                                                                                                                                                                          

 
          0  redo size                                                                                                                                                                               

 
       1927  bytes sent via SQL*Net to client                                                                                                                                                        

 
        524  bytes received via SQL*Net from client                                                                                                                                                  

 
          2  SQL*Net roundtrips to/from client                                                                                                                                                       

 
          0  sorts (memory)                                                                                                                                                                          

 
          0  sorts (disk)                                                                                                                                                                            

 
         15  rows processed                                                                                                                                                                          

 

11:41:13 SQL> spool off;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/89196/viewspace-1457042/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: oracle执行计划-001
请登录后发表评论 登录
全部评论

注册时间:2015-03-12

  • 博文量
    11
  • 访问量
    12516