【SQL 提示 之三】

简介:

SQL> create table t as select * from  dba_objects;
表已创建。
SQL> create index idx_t on t (object_id);
索引已创建。
SQL> exec dbms_stats.gather_table_stats(user,'T',cascade => true);
PL/SQL 过程已成功完成。
SQL> select /*+ full(t) */ * from t;
执行计划
----------------------------------------------------------                     
Plan hash value: 1601196873                                                    
--------------------------------------------------------------------------     
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |     
--------------------------------------------------------------------------     
|   0 | SELECT STATEMENT  |      | 68298 |  6736K|   276   (1)| 00:00:04 |     
|   1 |  TABLE ACCESS FULL| T    | 68298 |  6736K|   276   (1)| 00:00:04 |     
--------------------------------------------------------------------------     
SQL> select /*+ index(t idx_t) */ * from t;
执行计划
----------------------------------------------------------                     
Plan hash value: 1601196873                                                    
--------------------------------------------------------------------------     
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |     
--------------------------------------------------------------------------     
|   0 | SELECT STATEMENT  |      | 68298 |  6736K|   276   (1)| 00:00:04 |     
|   1 |  TABLE ACCESS FULL| T    | 68298 |  6736K|   276   (1)| 00:00:04 |     
--------------------------------------------------------------------------     

SQL> select /*+ index(t idx_t) */ * from t where object_id>1;
执行计划
----------------------------------------------------------                     
Plan hash value: 1594971208                                                    
--------------------------------------------------------------------------------
| Id  | Operation             | Name  | Rows  | Bytes | Cost (%CPU)| Time |   
---------------------------------------------------------------------------------
|   0 | SELECT STATEMENT      |       | 68298 |  6736K|  1189   (1)| 00:00:15 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T | 68298 |  6736K|  1189   (1)| 00:00:15 |
|*  2 |   INDEX RANGE SCAN    | IDX_T | 68298 |       |   153   (1)| 00:00:02 |                

                                                         
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):                            
---------------------------------------------------                            
   2 - access("OBJECT_ID">1)   
SQL> set linesize 120
SQL> set autot trace stat
SQL> select /*+ index(t idx_t) */ * from t where object_id>1;
已选择68298行。
统计信息
----------------------------------------------------------                                     

                       
          0  recursive calls 
          0  db block gets  
      10218  consistent gets
          0  physical reads 
          0  redo size  
    7807613  bytes sent via SQL*Net to client 
      50499  bytes received via SQL*Net from client
       4555  SQL*Net roundtrips to/from client  
          0  sorts (memory) 
          0  sorts (disk) 
      68298  rows processed
SQL> set autot traceonly
SQL> select /*+ index(t idx_t) */ * from t where object_id>1;
已选择68298行。
执行计划
---------------------------------------------------------- 
Plan hash value: 1594971208  
-------------------------------------------------------------------------------------
| Id  | Operation                   | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |       | 68298 |  6736K|  1189   (1)| 00:00:15 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T     | 68298 |  6736K|  1189   (1)| 00:00:15 |
|*  2 |   INDEX RANGE SCAN          | IDX_T | 68298 |       |   153   (1)| 00:00:02 |
------------------------------------------------------------------------------------- 
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - access("OBJECT_ID">1)
统计信息
---------------------------------------------------------- 
          0  recursive calls    
          0  db block gets 
      10218  consistent gets
          0  physical reads
          0  redo size 
    7807613  bytes sent via SQL*Net to client
      50499  bytes received via SQL*Net from client 
       4555  SQL*Net roundtrips to/from client 
          0  sorts (memory)
          0  sorts (disk) 
      68298  rows processed
SQL> select /*+ full(t) */ * from t;
已选择68298行。
执行计划
----------------------------------------------------------  
Plan hash value: 1601196873   
--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      | 68298 |  6736K|   276   (1)| 00:00:04 |
|   1 |  TABLE ACCESS FULL| T    | 68298 |  6736K|   276   (1)| 00:00:04 |
--------------------------------------------------------------------------


统计信息
----------------------------------------------------------    
          1  recursive calls
          0  db block gets 
       5493  consistent gets
          0  physical reads
          0  redo size  
    7807613  bytes sent via SQL*Net to client
      50499  bytes received via SQL*Net from client 
       4555  SQL*Net roundtrips to/from client  
          0  sorts (memory) 
          0  sorts (disk) 
      68298  rows processed
SQL> select /*+ no_index(t idx_t) */ * from t where object_id=1;
未选定行
执行计划
----------------------------------------------------------
Plan hash value: 1601196873
-------------------------------------------------------------------------- 
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |   101 |   275   (1)| 00:00:04 |
|*  1 |  TABLE ACCESS FULL| T    |     1 |   101 |   275   (1)| 00:00:04 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("OBJECT_ID"=1)  

SQL> select /*+ index_desc(t idx_t) */ * from t where object_id<200;

已选择191行。
执行计划
----------------------------------------------------------
Plan hash value: 2821899338   
-------------------------------------------------------------------------------------- 
| Id  | Operation                    | Name  | Rows  | Bytes | Cost (%CPU)| Time     | 
-------------------------------------------------------------------------------------- 
|   0 | SELECT STATEMENT             |       |   194 | 19594 |     5   (0)| 00:00:01 | 
|   1 |  TABLE ACCESS BY INDEX ROWID | T     |   194 | 19594 |     5   (0)| 00:00:01 | 
|*  2 |   INDEX RANGE SCAN DESCENDING| IDX_T |   194 |       |     2   (0)| 00:00:01 |
--------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   2 - access("OBJECT_ID"<200)  
       filter("OBJECT_ID"<200)
SQL> create bitmap index ibm_t on t (object_name);
索引已创建。
SQL> select  /*+ index_combine (t ibm_t) */ * from t;
已选择68298行。

执行计划
----------------------------------------------------------
Plan hash value: 2891273134  
-------------------------------------------------------------------------------------- 
| Id  | Operation                    | Name  | Rows  | Bytes | Cost (%CPU)| Time     |  
--------------------------------------------------------------------------------------  
|   0 | SELECT STATEMENT             |       | 68298 |  6736K|  1861   (1)| 00:00:23 | 
|   1 |  TABLE ACCESS BY INDEX ROWID | T     | 68298 |  6736K|  1861   (1)| 00:00:23 | 
|   2 |   BITMAP CONVERSION TO ROWIDS|       |       |       |            |          |
|   3 |    BITMAP INDEX FULL SCAN    | IBM_T |       |       |            |          |
--------------------------------------------------------------------------------------  
统计信息
SQL> select  /*+ index_ffs (t idx_t) */ object_id from t where object_id <200;
已选择191行。
执行计划
----------------------------------------------------------   
Plan hash value: 2497555198 
------------------------------------------------------------------------------  
| Id  | Operation            | Name  | Rows  | Bytes | Cost (%CPU)| Time     | 
------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |       |   194 |   970 |    44   (3)| 00:00:01 |
|*  1 |  INDEX FAST FULL SCAN| IDX_T |   194 |   970 |    44   (3)| 00:00:01 |
------------------------------------------------------------------------------ 
Predicate Information (identified by operation id):  
---------------------------------------------------
   1 - filter("OBJECT_ID"<200)
统计信息
SQL> select  /*+ index_jion (t idx_t ibm_t) */ object_id from t
  2  where object_id >200 and status ='vaild';

未选定
执行计划
---------------------------------------------------------- 
Plan hash value: 1601196873   -----------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |     1 |    11 |   275   (1)| 00:00:04 |
|*  1 |  TABLE ACCESS FULL| T    |     1 |    11 |   275   (1)| 00:00:04 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id): 
---------------------------------------------------                                            

                       
   1 - filter("STATUS"='vaild' AND "OBJECT_ID">200)  
                                         
SQL> select  /*+ index_jion (t idx_t ibm_t) */ object_id from t
  2  where object_id >200 and object_name='T';
执行计划
----------------------------------------------------------  
Plan hash value: 1178319173 
--------------------------------------------------------------------------------------  
| Id  | Operation                    | Name  | Rows  | Bytes | Cost (%CPU)| Time     |  
-------------------------------------------------------------------------------------- 
|   0 | SELECT STATEMENT             |       |     2 |    60 |     1   (0)| 00:00:01 | 
|*  1 |  TABLE ACCESS BY INDEX ROWID | T     |     2 |    60 |     1   (0)| 00:00:01 | 
|   2 |   BITMAP CONVERSION TO ROWIDS|       |       |       |            |          | 
|*  3 |    BITMAP INDEX SINGLE VALUE | IBM_T |       |       |            |          | 
-------------------------------------------------------------------------------------- 
Predicate Information (identified by operation id):    
--------------------------------------------------- 
   1 - filter("OBJECT_ID">200)  
   3 - access("OBJECT_NAME"='T') 
SQL> create bitmap index bitmap_t on t (status);
索引已创建。
SQL> select  /*+ index_jion (t idx_t ibm_t) */ object_id from t
  2  where object_id >200 and status ='vaild';
执行计划
----------------------------------------------------------  
Plan hash value: 1188740217  
-----------------------------------------------------------------------------------------
| Id  | Operation                    | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |          |     1 |    11 |     1   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS BY INDEX ROWID | T        |     1 |    11 |     1   (0)| 00:00:01 |
|   2 |   BITMAP CONVERSION TO ROWIDS|          |       |       |            |          |
|*  3 |    BITMAP INDEX SINGLE VALUE | BITMAP_T |       |       |            |          |
-----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("OBJECT_ID">200) 
   3 - access("STATUS"='vaild')

SQL> select  /*+ index_jion (t idx_t ibm_t) */ object_id from t
  2  where object_id < 200 and status ='vaild';

未选定行
执行计划
----------------------------------------------------------  
Plan hash value: 1188740217
-----------------------------------------------------------------------------------------
| Id  | Operation                    | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |          |     1 |    11 |     1   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS BY INDEX ROWID | T        |     1 |    11 |     1   (0)| 00:00:01 |
|   2 |   BITMAP CONVERSION TO ROWIDS|          |       |       |            |          |
|*  3 |    BITMAP INDEX SINGLE VALUE | BITMAP_T |       |       |            |          |
-----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter("OBJECT_ID"<200) 
   3 - access("STATUS"='vaild')

SQL> select  /*+ index_join (t idx_t ibm_t) */ object_id from t
  2  where object_id < 200 and status ='vaild';

未选定
执行计划
----------------------------------------------------------
Plan hash value: 2966373114
---------------------------------------------------------------------------------------       

| Id  | Operation                     | Name             | Rows  | Bytes | Cost (%CPU)| Time|
----------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |                  |     1 |    11 |     4 (25)|00:00:01

|                     
|*  1 |  VIEW                         | index$_join$_001 |     1 |    11 |     4 (25)| 00:00:01

|                     
|*  2 |   HASH JOIN                   |                  |       |       |            |       |

                    
|   3 |    BITMAP CONVERSION TO ROWIDS|                  |     1 |    11 |     1   (0)|00:00:01

|                     
|*  4 |     BITMAP INDEX SINGLE VALUE | BITMAP_T         |       |       |            |       |
|*  5 |    INDEX RANGE SCAN           | IDX_T            |     1 |    11 |   3  (34)|00:00:01 |

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

----                     
                                                                                               

                       
Predicate Information (identified by operation id):                                            

                       
---------------------------------------------------
   1 - filter("STATUS"='vaild' AND "OBJECT_ID"<200)
   2 - access(ROWID=ROWID)   
   4 - access("STATUS"='vaild')
   5 - access("OBJECT_ID"<200)
SQL> create table t1 as select 1 id ,object_name from dba_objects
  2  where rownum <10000;

表已创建。

SQL> set autot trace exp stat
SQL> create index idx_id_name on t1 (id,object_name);
索引已创建。
SQL> insert into t1 select 2 , object_name from dba_objects;
已创建68303行。
SQL> set autot off
SQL> insert into t1 select 3 , object_name from dba_objects;
已创建68303行。
SQL> insert into t1 select 4 , object_name from dba_objects;
已创建68303行。
SQL> set autot traceonly
SQL> select /*+ full(t) */ owner ,object_name,object_id ,count(*)
  2  from t
  3  group by owner,object_name,object_id ;
已选择68298行。
执行计划
----------------------------------------------------------                                     
Plan hash value: 47235625                                                                      
-----------------------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
-----------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      | 68298 |  2401K|       |   926   (1)| 00:00:12 |
|   1 |  HASH GROUP BY     |      | 68298 |  2401K|  6440K|   926   (1)| 00:00:12 |
|   2 |   TABLE ACCESS FULL| T    | 68298 |  2401K|       |   275   (1)| 00:00:04 |
-----------------------------------------------------------------------------------
统计信息
---------------------------------------------------------- 
        325  recursive calls   
          0  db block gets  
       1068  consistent gets
          2  physical reads 
          0  redo size 
    2992057  bytes sent via SQL*Net to client
      50499  bytes received via SQL*Net from client 
       4555  SQL*Net roundtrips to/from client
          4  sorts (memory) 
          0  sorts (disk)
      68298  rows processed 

相关文章
|
SQL Oracle 关系型数据库
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
495 0
Python 技术篇-操作oracle数据库执行SQL语句报错,提示ORA-00911: 无效字符解决方法
|
SQL 弹性计算
服务器内自建SQL server 服务无法启动,提示评估期已过
服务器内自建SQL server 服务无法启动,提示评估期已过
|
SQL API Apache
Flink SQL代码补全提示(源码分析)
使用过Navicat的童鞋都知道,当我们写SQL的时候,工具会根据我们输入的内容弹出提示,这样可以很方便我们去写SQL
377 0
Flink SQL代码补全提示(源码分析)
|
SQL Windows
SQL Server安装提示【需要microsoft.NET Framework 3.5 Service Pack 1】
SQL Server安装提示【需要microsoft.NET Framework 3.5 Service Pack 1】
538 0
SQL Server安装提示【需要microsoft.NET Framework 3.5 Service Pack 1】
|
SQL Java 关系型数据库
spring boot集成mybatis只剩两个sql 并提示 Cannot obtain primary key information from the database, generated objects may be incomplete
spring boot集成mybatis只剩两个sql 并提示 Cannot obtain primary key information from the database, generated objects may be incomplete
121 0
spring boot集成mybatis只剩两个sql 并提示 Cannot obtain primary key information from the database, generated objects may be incomplete
|
SQL 关系型数据库 数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 14 章 性能提示
第 14 章 性能提示 目录 14.1. 使用EXPLAIN 14.1.1. EXPLAIN基础 14.1.2. EXPLAIN ANALYZE 14.1.3. 警告 14.2. 规划器使用的统计信息 14.
1207 0
|
存储 SQL 关系型数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 14 章 性能提示_14.5. 非持久设置
14.5. 非持久设置 持久性是数据库的一个保证已提交事务的记录的特性(即使是发生服务器崩溃或断电)。 然而,持久性会明显增加数据库的负荷,因此如果你的站点不需要这个保证,PostgreSQL可以被配置成运行更快。
1181 0
|
SQL 关系型数据库 数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 14 章 性能提示_14.4. 填充一个数据库
14.4. 填充一个数据库 14.4.1. 禁用自动提交 14.4.2. 使用COPY 14.4.3. 移除索引 14.4.4. 移除外键约束 14.4.5. 增加maintenance_work_mem 14.4.6. 增加max_wal_size 14.4.7. 禁用 WAL 归档和流复制 14.4.8. 事后运行ANALYZE 14.4.9. 关于pg_dump的一些注记 第一次填充数据库时可能需要插入大量的数据。
1579 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 14 章 性能提示_14.3. 用显式JOIN子句控制规划器
14.3. 用显式JOIN子句控制规划器 我们可以在一定程度上用显式JOIN语法控制查询规划器。要明白为什么需要它,我们首先需要一些背景知识。 在一个简单的连接查询中,例如: SELECT * FROM a, b, c WHERE a.id = b.id AND b.ref = c.id; 规划器可以自由地按照任何顺序连接给定的表。
1351 0
|
SQL 存储 关系型数据库
PostgreSQL 10.1 手册_部分 II. SQL 语言_第 14 章 性能提示_14.2. 规划器使用的统计信息
14.2. 规划器使用的统计信息 14.2.1. 单列统计 14.2.2. 扩展统计 14.2.1. 单列统计 如我们在上一节所见,查询规划器需要估计一个查询要检索的行数,这样才能对查询计划做出好的选择。
1116 0