A-A+
outline使用简介
outline使用简介
下边的语句是在没有索引的情况下的执行计划
SQL> conn yallonking/yallonking
Connected.
SQL> set autot traceonly
SQL> set line 400
SQL> select * from yallonking where object_id=20;
Execution Plan
----------------------------------------------------------
Plan hash value: 2582482548
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 8 | 1416 | 158 (2)| 00:00:02 |
|* 1 | TABLE ACCESS FULL| YALLONKING | 8 | 1416 | 158 (2)| 00:00:02 |
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("OBJECT_ID"=20)
Note
-----
- dynamic sampling used for this statement
Statistics
----------------------------------------------------------
288 recursive calls
0 db block gets
795 consistent gets
684 physical reads
0 redo size
1197 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
我们将一个没有索引的查询存储在outline的category中
SQL> create or replace outline yallonking for category yallonking on select * from yallonking where object_id=20; Outline created.
创建一个索引
SQL> create index idx_yallonking on yallonking(object_id); Index created.
再次查看该sql执行计划
SQL> set autot traceonly
SQL> select * from yallonking where object_id=20;
Execution Plan
----------------------------------------------------------
Plan hash value: 4208659539
----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 177 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| YALLONKING | 1 | 177 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_YALLONKING | 1 | | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("OBJECT_ID"=20)
Note
-----
- dynamic sampling used for this statement
Statistics
----------------------------------------------------------
9 recursive calls
0 db block gets
84 consistent gets
4 physical reads
0 redo size
1201 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
启用outline category
SQL> ALTER SESSION SET USE_STORED_OUTLINES = yallonking; Session altered.
再次查看该sql执行计划
SQL> select * from yallonking where object_id=20;
Execution Plan
----------------------------------------------------------
Plan hash value: 2582482548
--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 575 | 99K| 158 (2)| 00:00:02 |
|* 1 | TABLE ACCESS FULL| YALLONKING | 575 | 99K| 158 (2)| 00:00:02 | //执行计划保持以前的
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("OBJECT_ID"=20)
Note
-----
- outline "YALLONKING" used for this statement //此处使用了outline category
Statistics
----------------------------------------------------------
35 recursive calls
123 db block gets
710 consistent gets
0 physical reads
576 redo size
1197 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
2 sorts (memory)
0 sorts (disk)
1 rows processed
下边取消outline,执行计划恢复正常
SQL> ALTER SESSION SET USE_STORED_OUTLINES = false;
Session altered.
SQL> select * from yallonking where object_id=20;
Execution Plan
----------------------------------------------------------
Plan hash value: 4208659539
----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 177 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| YALLONKING | 1 | 177 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_YALLONKING | 1 | | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("OBJECT_ID"=20)
Note
-----
- dynamic sampling used for this statement
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
4 consistent gets
0 physical reads
0 redo size
1201 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
查看outline
SQL> SELECT NAME, SQL_TEXT 2 FROM USER_OUTLINES 3 WHERE CATEGORY='YALLONKING'; NAME SQL_TEXT ------------------------------ -------------------------------------------------------------------------------- YALLONKING select * from yallonking where object_id=20