【oracle 性能优化】组合索引之index_ss

简介:
还没写完整的。。。
SQL> create table yangtest (id int,val1 varchar2(7),val2 varchar2(7));
表已创建。
已用时间:  00: 00: 00.06
SQL> begin
  2  for i in 1..100000 loop
  3  insert into yangtest values(mod(i,50),to_char(i),to_char(i));
  4  end loop;
  5  commit;
  6  end;
  7  /
PL/SQL 过程已成功完成。

已用时间:  00: 00: 09.23
SQL> set autotrace on exp
SQL> select  * from yangtest
  2  where val1='100';
        ID VAL1    VAL2                                                         
---------- ------- -------                                                      
         0 100     100                                                          

已用时间:  00: 00: 00.04

执行计划
----------------------------------------------------------                      
Plan hash value: 911235955                                                      
                                                                                
------------------------------------------------------------------------------  
| Id  | Operation         | Name     | Rows  | Bytes | Cost (%CPU)| Time     |  
------------------------------------------------------------------------------  
|   0 | SELECT STATEMENT  |          |     3 |    69 |    77   (2)| 00:00:01 |  
|*  1 |  TABLE ACCESS FULL| YANGTEST |     3 |    69 |    77   (2)| 00:00:01 |  
------------------------------------------------------------------------------  
                                                                                
Predicate Information (identified by operation id):                             
---------------------------------------------------                             
                                                                                
   1 - filter("VAL1"='100')                                                     
                                                                                
Note                                                                            
-----                                                                           
   - dynamic sampling used for this statement                                   
SQL> truncate table yangtest;
表被截断。
已用时间:  00: 00: 00.42
SQL> begin
  2  for i in 1..100000 loop
  3  insert into yangtest values(mod(i,36),to_char(i),to_char(i));
  4  end loop;
  5  commit;
  6  end;
  7  /
PL/SQL 过程已成功完成。
已用时间:  00: 00: 09.14                                 
SQL> create index idx_id_val1 on yangtest(id,val1);
索引已创建。
已用时间:  00: 00: 00.42
SQL> exec dbms_stats.gather_table_stats(user,'YANGTEST',cascade=>true);
PL/SQL 过程已成功完成。
已用时间:  00: 00: 02.40
SQL> set linesize 120
SQL> select  * from yangtest
  2  where val1='100';
        ID VAL1    VAL2  
---------- ------- ------- 
        28 100     100        
已用时间:  00: 00: 00.01
执行计划
---------------------------------------------------------
Plan hash value: 2176791134 
------------------------------------------------------------------------------------------- 
| Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     | 
------------------------------------------------------------------------------------------- 
|   0 | SELECT STATEMENT            |             |     1 |    14 |    38   (0)| 00:00:01 | 
|   1 |  TABLE ACCESS BY INDEX ROWID| YANGTEST    |     1 |    14 |    38   (0)| 00:00:01 | 
|*  2 |   INDEX SKIP SCAN           | IDX_ID_VAL1 |     1 |       |    37   (0)| 00:00:01 |
------------------------------------------------------------------------------------------- 
Predicate Information (identified by operation id):
--------------------------------------------------- 
   2 - access("VAL1"='100') 
       filter("VAL1"='100') 
SQL> select  * from yangtest
  2  where val1='100' and id=20;
未选定行
已用时间:  00: 00: 00.00
执行计划
---------------------------------------------------------
Plan hash value: 3983356224 
------------------------------------------------------------------------------------------- 
| Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     | 
------------------------------------------------------------------------------------------- 
|   0 | SELECT STATEMENT            |             |     1 |    14 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| YANGTEST    |     1 |    14 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | IDX_ID_VAL1 |     1 |       |     1   (0)| 00:00:01 |
------------------------------------------------------------------------------------------- 
Predicate Information (identified by operation id): 
---------------------------------------------------  
   2 - access("ID"=20 AND "VAL1"='100') 
SQL> set autotrace traceonly
SQL> select  * from yangtest
  2  where val1>'100' and id=20;
已选择2778行。
已用时间:  00: 00: 00.07
执行计划
---------------------------------------------------------- 
Plan hash value: 911235955 
------------------------------------------------------------------------------  
| Id  | Operation         | Name     | Rows  | Bytes | Cost (%CPU)| Time     |  
------------------------------------------------------------------------------ 
|   0 | SELECT STATEMENT  |          |  2778 | 38892 |    77   (2)| 00:00:01 | 
|*  1 |  TABLE ACCESS FULL| YANGTEST |  2778 | 38892 |    77   (2)| 00:00:01 |
------------------------------------------------------------------------------ 
Predicate Information (identified by operation id):
--------------------------------------------------- 
   1 - filter("ID"=20 AND "VAL1">'100')
统计信息
---------------------------------------------------------- 
          0  recursive calls       
          0  db block gets  
        465  consistent gets  
          0  physical reads  
          0  redo size    
      70650  bytes sent via SQL*Net to client 
       2451  bytes received via SQL*Net from client   
        187  SQL*Net roundtrips to/from client   
          0  sorts (memory) 
          0  sorts (disk)  
       2778  rows processed 
SQL> select  * from yangtest
  2  where val1<'100' and id=20;
未选定行
已用时间:  00: 00: 00.01
执行计划
---------------------------------------------------------- 
Plan hash value: 3983356224
------------------------------------------------------------------------------------------- 
| Id  | Operation                   | Name        | Rows  | Bytes | Cost (%CPU)| Time     |  
------------------------------------------------------------------------------------------- 
|   0 | SELECT STATEMENT            |             |     1 |    14 |     3   (0)| 00:00:01 | 
|   1 |  TABLE ACCESS BY INDEX ROWID| YANGTEST    |     1 |    14 |     3   (0)| 00:00:01 | 
|*  2 |   INDEX RANGE SCAN          | IDX_ID_VAL1 |     1 |       |     2   (0)| 00:00:01 | 
------------------------------------------------------------------------------------------- 
Predicate Information (identified by operation id): 
--------------------------------------------------- 
   2 - access("ID"=20 AND "VAL1"<'100')
统计信息
---------------------------------------------------------- 
          1  recursive calls   
          0  db block gets   
          2  consistent gets  
          0  physical reads 
          0  redo size   
        387  bytes sent via SQL*Net to client  
        405  bytes received via SQL*Net from client 
          1  SQL*Net roundtrips to/from client
          0  sorts (memory)    
          0  sorts (disk)    
          0  rows processed   
相关文章
|
8月前
|
SQL Oracle 关系型数据库
Oracle-index索引解读
Oracle-index索引解读
207 0
|
2月前
|
SQL Oracle 关系型数据库
[Oracle]索引
本文介绍了数据库索引的基本概念、优化查询的原理及分类。索引是一种数据结构(如B树或B+树),通过排序后的`rowid`来优化查询性能。文章详细解释了索引的构建过程、B+树的特点及其优势,并介绍了五种常见的索引类型:唯一索引、组合索引、反向键索引、位图索引和基于函数的索引。每种索引都有其适用场景和限制,帮助读者更好地理解和应用索引技术。
80 1
[Oracle]索引
|
3月前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
41 1
|
3月前
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
|
索引
Oracle-序列、索引和同义词
Oracle-序列、索引和同义词
58 0
|
8月前
|
存储 Oracle 关系型数据库
Oracle索引知识看这一篇就足够
Oracle索引知识看这一篇就足够
|
8月前
|
SQL 监控 Oracle
Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)
Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)
|
8月前
|
存储 Oracle 关系型数据库
Oracle 12c的多重索引:数据的“多维导航仪”
【4月更文挑战第19天】Oracle 12c的多重索引提升数据查询效率,如同多维导航仪。在同一表上创建针对不同列的多个索引,加速检索过程。虽然过多索引会增加存储和维护成本,但合理选择和使用索引策略,结合位图、函数索引等高级特性,能优化查询,应对复杂场景。数据管理员应善用这些工具,根据需求进行索引管理,支持企业数据分析。
|
存储 SQL Oracle
Oracle优化避免索引失效
Oracle优化避免索引失效
383 0
|
存储 Oracle 关系型数据库
9-6 Oracle 管理索引
9-6 Oracle 管理索引

推荐镜像

更多