首页 > 数据库 > Oracle > oracle经常使用到的hint
Table created.SQL> create index tt1_index on tt1(object_type,object_name);Index created.QL> select * from tt1 where object_name='TT';
Execution Plan
----------------------------------------------------------
Plan hash value: 3728419071
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2 | 64 | 33 (0)| 00:00:01 |
|* 1 | INDEX SKIP SCAN | TT1_INDEX | 2 | 64 | 33 (0)| 00:00:01 |
------------------------------------------------------------------------------但是当combine index中的重复列很少的时候,fts比index_ss的效率要高。SQL> create table tt2 as select object_id,object_name from dba_objects;
Table created.
SQL> create index tt2_index on tt2(object_id,object_name);
Index created.
SQL> exec dbms_stats.gather_table_stats('sys','tt2');
PL/SQL procedure successfully completed.
SQL> select * from tt2 where object_name='TT';
Execution Plan
----------------------------------------------------------
Plan hash value: 1248358058
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2 | 58 | 54 (2)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| TT2 | 2 | 58 | 54 (2)| 00:00:01 |
--------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("OBJECT_NAME"='TT')
Statistics
----------------------------------------------------------
128 recursive calls
0 db block gets
260 consistent gets
0 physical reads
0 redo size
647 bytes sent via SQL*Net to client
469 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
4 sorts (memory)
0 sorts (disk)
2 rows processed
SQL> select /*+index_ss(tt2 tt2_index)*/ * from tt2 where object_name='TT';
Execution Plan
----------------------------------------------------------
Plan hash value: 3854296115
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 2 | 58 | 50060 (1)| 00:10:01 |
|* 1 | INDEX SKIP SCAN | TT2_INDEX | 2 | 58 | 50060 (1)| 00:10:01 |
------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("OBJECT_NAME"='TT')
filter("OBJECT_NAME"='TT')
Statistics
----------------------------------------------------------
1 recursive calls
0 db block gets
283 consistent gets
0 physical reads
0 redo size
647 bytes sent via SQL*Net to client
469 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
2 rows processed
SQL> select /*+leading(tt1,tt)*/* from tt,tt1 where tt.object_name=tt1.object_name and tt1.object_name='TT1'; (指定先访问tt1标上的数据)20 rows selected.Execution Plan----------------------------------------------------------Plan hash value: 3953670397--------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 3 | 375 | 187 (2)| 00:00:03 ||* 1 | HASH JOIN | | 3 | 375 | 187 (2)| 00:00:03 ||* 2 | INDEX SKIP SCAN | TT1_INDEX | 2 | 64 | 33 (0)| 00:00:01 ||* 3 | TABLE ACCESS FULL| TT | 2 | 186 | 154 (2)| 00:00:02 |--------------------------------------------------------------------------------Predicate Information (identified by operation id):---------------------------------------------------1 - access("TT"."OBJECT_NAME"="TT1"."OBJECT_NAME")2 - access("TT1"."OBJECT_NAME"='TT1')filter("TT1"."OBJECT_NAME"='TT1')3 - filter("TT"."OBJECT_NAME"='TT1')
call count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse 1 0.00 0.00 0 0 0 0Execute 1 0.00 0.00 0 0 0 0Fetch 68 0.01 0.02 0 765 0 999------- ------ -------- ---------- ---------- ---------- ---------- ----------total 70 0.01 0.02 0 765 0 999Misses in library cache during parse: 0Optimizer mode: ALL_ROWSParsing user id: SYSRows Row Source Operation------- ---------------------------------------------------999 HASH JOIN (cr=765 pr=0 pw=0 time=6818 us)999 INDEX FAST FULL SCAN TT3_INDEX (cr=8 pr=0 pw=0 time=94 us)(object id 52263)49975 TABLE ACCESS FULL TT (cr=757 pr=0 pw=0 time=194 us)
call count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse 1 0.00 0.00 0 0 0 0Execute 1 0.00 0.00 0 0 0 0Fetch 68 0.10 0.13 0 50870 0 999------- ------ -------- ---------- ---------- ---------- ---------- ----------total 70 0.10 0.13 0 50870 0 999Misses in library cache during parse: 0Optimizer mode: ALL_ROWSParsing user id: SYSRows Row Source Operation------- ---------------------------------------------------999 NESTED LOOPS (cr=50870 pr=0 pw=0 time=7091 us)49975 TABLE ACCESS FULL TT (cr=757 pr=0 pw=0 time=74 us)999 INDEX RANGE SCAN TT3_INDEX (cr=50113 pr=0 pw=0 time=99513 us)(object id 52263)---=====================================================
select /*+use_merge(tt tt3)*/* from tt,tt3 where tt.object_id=tt3.object_idcall count cpu elapsed disk query current rows------- ------ -------- ---------- ---------- ---------- ---------- ----------Parse 1 0.00 0.00 0 0 0 0Execute 1 0.00 0.00 0 0 0 0Fetch 68 0.00 0.00 0 159 0 999------- ------ -------- ---------- ---------- ---------- ---------- ----------total 70 0.00 0.00 0 159 0 999Misses in library cache during parse: 0Optimizer mode: ALL_ROWSParsing user id: SYSRows Row Source Operation------- ---------------------------------------------------999 MERGE JOIN (cr=159 pr=0 pw=0 time=6841 us)1000 TABLE ACCESS BY INDEX ROWID TT (cr=151 pr=0 pw=0 time=4100 us)1000 INDEX FULL SCAN TT_INDEX (cr=71 pr=0 pw=0 time=1047 us)(object id 52177)999 SORT JOIN (cr=8 pr=0 pw=0 time=2316 us)999 INDEX FAST FULL SCAN TT3_INDEX (cr=8 pr=0 pw=0 time=33 us)(object id 52263)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24237320/viewspace-1059739/ ,如需转载,请注明出处,否则将追究法律责任。