接著上一篇的例子,在表上建立兩個索引:
SQL> CREATE INDEX IND_T_OWNER ON T (OWNER);
索引已建立。
SQL> CREATE INDEX IND_T_ID ON T (OBJECT_ID);
索引已建立。
對於全表掃描使用SAMPLE語句,從執行計畫中可以直接看出來:
SQL> SELECT OWNER, OBJECT_ID FROM T SAMPLE (0.01);
OWNER OBJECT_ID
------------------------------ ----------
SYS 4479
PUBLIC 13929
PUBLIC 30919
執行計畫
----------------------------------------------------------
Plan hash value: 2767392432
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 5 | 115 | 157 (2)| 00:00:02 |
| 1 | TABLE ACCESS SAMPLE| T | 5 | 115 | 157 (2)| 00:00:02 |
----------------------------------------------------------------------------
統計資訊
----------------------------------------------------------
1 recursive calls
0 db block gets
73 consistent gets
0 physical reads
0 redo size
527 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)
3 rows processed
而對於索引掃描,同樣可以利用SAMPLE,不過直接從執行計畫中看不出來:
SQL> SELECT OWNER, OBJECT_ID FROM T SAMPLE (1) WHERE WNER = USER;
OWNER OBJECT_ID
------------------------------ ----------
YANGTK 61217
YANGTK 83222
YANGTK 90979
執行計畫
----------------------------------------------------------
Plan hash value: 3630032853
-------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 22 | 506 | 6 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| T | 22 | 506 | 6 (0)| 00:00:01 |
本欄目更多精彩內容:http://www.bianceng.cn/database/Oracle/