• 分页SQL 的各种索引对比


    SQL> 
    
    select *
      from (select rownum as rn, a.*
              from (select *
                      from t100 a
                     where object_id > 1500
                       and owner = 'SYS'
                     order by object_id desc) a
             where rownum <= 40) a
     where rn >= 1;
    
    SQL> select count(*) from t100;
    
      COUNT(*)
    ----------
      12083584
    
    SQL> select count(*) from t100 where owner='SYS';
    
    
      COUNT(*)
    ----------
       4838784
    
    
    SQL> select count(*)
                      from t100 a
                     where 
                     owner = 'SYS'
                     and object_name like '%LOG%'  2    3    4    5  ;
    
      COUNT(*)
    ----------
         37632
    
    
    创建索引1:
    
    
      CREATE INDEX "SYSTEM"."T100_IDX1" ON "SYSTEM"."T100" ("OWNER", "OBJECT_ID") 
    
    
    
    SQL> select *
      from (select rownum as rn, a.*
              from (select /*+ index(a t100_idx1)*/ *
                      from t100 a
                     where 
                        owner = 'SYS'
                        and object_name like 'LOG%'
                     order by object_id desc) a
             where rownum <= 40) a
     where rn >= 1;  2    3    4    5    6    7    8    9   10  
    
    已选择40行。
    
    
    执行计划
    ----------------------------------------------------------
    Plan hash value: 3995274525
    
    ---------------------------------------------------------------------------------------------
    | Id  | Operation			| Name	    | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT		|	    |	  7 |  1540 |	432K  (1)| 01:26:36 |
    |*  1 |  VIEW				|	    |	  7 |  1540 |	432K  (1)| 01:26:36 |
    |*  2 |   COUNT STOPKEY 		|	    |	    |	    |		 |	    |
    |   3 |    VIEW 			|	    |	  7 |  1449 |	432K  (1)| 01:26:36 |
    |*  4 |     SORT ORDER BY STOPKEY	|	    |	  7 |	679 |	432K  (1)| 01:26:36 |
    |*  5 |      TABLE ACCESS BY INDEX ROWID| T100	    |	  7 |	679 |	432K  (1)| 01:26:36 |
    |*  6 |       INDEX RANGE SCAN		| T100_IDX1 |	431K|	    |  1318   (1)| 00:00:16 |
    ---------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       1 - filter("RN">=1)
       2 - filter(ROWNUM<=40)
       4 - filter(ROWNUM<=40)
       5 - filter("OBJECT_NAME" LIKE 'LOG%')
       6 - access("OWNER"='SYS')
    
    
    统计信息
    ----------------------------------------------------------
    	  1  recursive calls
    	  0  db block gets
        4852145  consistent gets
         116880  physical reads
    	  0  redo size
           2537  bytes sent via SQL*Net to client
    	542  bytes received via SQL*Net from client
    	  4  SQL*Net roundtrips to/from client
    	  1  sorts (memory)
    	  0  sorts (disk)
    	 40  rows processed
    
    逻辑读 4852145
    
    
    
    
    创建索引2:
    
      CREATE INDEX "SYSTEM"."T100_IDX2" ON "SYSTEM"."T100" ("OWNER", "OBJECT_NAME", "OBJECT_ID") 
    
    执行计划
    ----------------------------------------------------------
    Plan hash value: 3889701471
    
    ---------------------------------------------------------------------------------------------
    | Id  | Operation			| Name	    | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT		|	    |	  7 |  1540 |	 13   (8)| 00:00:01 |
    |*  1 |  VIEW				|	    |	  7 |  1540 |	 13   (8)| 00:00:01 |
    |*  2 |   COUNT STOPKEY 		|	    |	    |	    |		 |	    |
    |   3 |    VIEW 			|	    |	  7 |  1449 |	 13   (8)| 00:00:01 |
    |*  4 |     SORT ORDER BY STOPKEY	|	    |	  7 |	679 |	 13   (8)| 00:00:01 |
    |   5 |      TABLE ACCESS BY INDEX ROWID| T100	    |	  7 |	679 |	 12   (0)| 00:00:01 |
    |*  6 |       INDEX RANGE SCAN		| T100_IDX2 |	  7 |	    |	  4   (0)| 00:00:01 |
    ---------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       1 - filter("RN">=1)
       2 - filter(ROWNUM<=40)
       4 - filter(ROWNUM<=40)
       6 - access("OWNER"='SYS' AND "OBJECT_NAME" LIKE 'LOG%')
           filter("OBJECT_NAME" LIKE 'LOG%')
    
    
    统计信息
    ----------------------------------------------------------
    	  1  recursive calls
    	  0  db block gets
          10685  consistent gets
    	  0  physical reads
    	  0  redo size
           2537  bytes sent via SQL*Net to client
    	542  bytes received via SQL*Net from client
    	  4  SQL*Net roundtrips to/from client
    	  1  sorts (memory)
    	  0  sorts (disk)
    	 40  rows processed
    
    
    逻辑读 10685
    
    
    
    
    
    
    
    创建索引3:
    
      CREATE INDEX "SYSTEM"."T100_IDX3" ON "SYSTEM"."T100" ("OBJECT_ID", "OWNER") 
    
    执行计划
    ----------------------------------------------------------
    Plan hash value: 1239817574
    
    ---------------------------------------------------------------------------------------------
    | Id  | Operation			| Name	    | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT		|	    |	  7 |  1540 |	468K  (1)| 01:33:43 |
    |*  1 |  VIEW				|	    |	  7 |  1540 |	468K  (1)| 01:33:43 |
    |*  2 |   COUNT STOPKEY 		|	    |	    |	    |		 |	    |
    |   3 |    VIEW 			|	    |	  7 |  1449 |	468K  (1)| 01:33:43 |
    |*  4 |     SORT ORDER BY STOPKEY	|	    |	  7 |	679 |	468K  (1)| 01:33:43 |
    |*  5 |      TABLE ACCESS BY INDEX ROWID| T100	    |	  7 |	679 |	468K  (1)| 01:33:43 |
    |*  6 |       INDEX FULL SCAN		| T100_IDX3 |	431K|	    | 36886   (1)| 00:07:23 |
    ---------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       1 - filter("RN">=1)
       2 - filter(ROWNUM<=40)
       4 - filter(ROWNUM<=40)
       5 - filter("OBJECT_NAME" LIKE 'LOG%')
       6 - access("OWNER"='SYS')
           filter("OWNER"='SYS')
    
    
    统计信息
    ----------------------------------------------------------
    	  1  recursive calls
    	  0  db block gets
        4875771  consistent gets
         153771  physical reads
    	  0  redo size
           2537  bytes sent via SQL*Net to client
    	542  bytes received via SQL*Net from client
    	  4  SQL*Net roundtrips to/from client
    	  1  sorts (memory)
    	  0  sorts (disk)
    	 40  rows processed
    
    逻辑读 4875771
    
    
    创建索引4:
    
      CREATE INDEX "SYSTEM"."T100_IDX4" ON "SYSTEM"."T100" ("OBJECT_ID", "OWNER", "OBJECT_NAME") 
    
    执行计划
    ----------------------------------------------------------
    Plan hash value: 1079028630
    
    ---------------------------------------------------------------------------------------------
    | Id  | Operation			| Name	    | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT		|	    |	  7 |  1540 | 77998   (1)| 00:15:36 |
    |*  1 |  VIEW				|	    |	  7 |  1540 | 77998   (1)| 00:15:36 |
    |*  2 |   COUNT STOPKEY 		|	    |	    |	    |		 |	    |
    |   3 |    VIEW 			|	    |	  7 |  1449 | 77998   (1)| 00:15:36 |
    |*  4 |     SORT ORDER BY STOPKEY	|	    |	  7 |	679 | 77998   (1)| 00:15:36 |
    |   5 |      TABLE ACCESS BY INDEX ROWID| T100	    |	  7 |	679 | 77997   (1)| 00:15:36 |
    |*  6 |       INDEX FULL SCAN		| T100_IDX4 |	  7 |	    | 77989   (1)| 00:15:36 |
    ---------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       1 - filter("RN">=1)
       2 - filter(ROWNUM<=40)
       4 - filter(ROWNUM<=40)
       6 - access("OWNER"='SYS' AND "OBJECT_NAME" LIKE 'LOG%')
           filter("OWNER"='SYS' AND "OBJECT_NAME" LIKE 'LOG%')
    
    
    统计信息
    ----------------------------------------------------------
    	  1  recursive calls
    	  0  db block gets
          89401  consistent gets
           2935  physical reads
    	  0  redo size
           2537  bytes sent via SQL*Net to client
    	542  bytes received via SQL*Net from client
    	  4  SQL*Net roundtrips to/from client
    	  1  sorts (memory)
    	  0  sorts (disk)
    	 40  rows processed
    
    逻辑读: 89401
    
    创建索引5:
      CREATE INDEX "SYSTEM"."T100_IDX5" ON "SYSTEM"."T100" ("OBJECT_NAME", "OWNER", "OBJECT_ID") 
    执行计划
    ----------------------------------------------------------
    Plan hash value: 3702588553
    
    ---------------------------------------------------------------------------------------------
    | Id  | Operation			| Name	    | Rows  | Bytes | Cost (%CPU)| Time     |
    ---------------------------------------------------------------------------------------------
    |   0 | SELECT STATEMENT		|	    |	  7 |  1540 |	 14   (8)| 00:00:01 |
    |*  1 |  VIEW				|	    |	  7 |  1540 |	 14   (8)| 00:00:01 |
    |*  2 |   COUNT STOPKEY 		|	    |	    |	    |		 |	    |
    |   3 |    VIEW 			|	    |	  7 |  1449 |	 14   (8)| 00:00:01 |
    |*  4 |     SORT ORDER BY STOPKEY	|	    |	  7 |	679 |	 14   (8)| 00:00:01 |
    |   5 |      TABLE ACCESS BY INDEX ROWID| T100	    |	  7 |	679 |	 13   (0)| 00:00:01 |
    |*  6 |       INDEX RANGE SCAN		| T100_IDX5 |	  7 |	    |	  5   (0)| 00:00:01 |
    ---------------------------------------------------------------------------------------------
    
    Predicate Information (identified by operation id):
    ---------------------------------------------------
    
       1 - filter("RN">=1)
       2 - filter(ROWNUM<=40)
       4 - filter(ROWNUM<=40)
       6 - access("OBJECT_NAME" LIKE 'LOG%' AND "OWNER"='SYS')
           filter("OWNER"='SYS' AND "OBJECT_NAME" LIKE 'LOG%')
    
    
    统计信息
    ----------------------------------------------------------
    	  0  recursive calls
    	  0  db block gets
          10898  consistent gets
    	  0  physical reads
    	  0  redo size
           2537  bytes sent via SQL*Net to client
    	542  bytes received via SQL*Net from client
    	  4  SQL*Net roundtrips to/from client
    	  1  sorts (memory)
    	  0  sorts (disk)
    	 40  rows processed
    

  • 相关阅读:
    安全运维中基线检查的自动化
    解决“指定的服务已经标记为删除”问题
    linux让命令或程序在终端后台运行的方法(Ubuntu/Fedora/Centos等一样适用)
    微信小程序、SSL证书、开启服务器TSL1.0、TSL1.1、TSL1.2服务
    linux screen工具
    11.2.0.1升级到11.2.0.4报错之中的一个:UtilSession failed: Patch 9413827
    swift 编译提前定义 --不知道怎么定义,可是能够#if
    编译安装 gcc 4.9并验证使用
    sparkR处理Gb级数据集
    【J2EE】在项目中理解J2EE规范
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349921.html
Copyright © 2020-2023  润新知