Oracle 索引和執行計劃
建了個測試的資料表,想測試建了索引和不建立索引的區別。建立表的資料量為108631962行。每次插入9999999行,每次大概半個小時。在id上建立索引,花時間為37秒,不建立索引花時間為:1分58秒。演示如下所示:
SQL> insert into studyindex1 select rownum id,'db'dbms_random.value(
2 1,100) name,dbms_random.string('X',20) remark from dual connect by level<10
000000;
已建立9999999行。
SQL> commit;
提交完成。
SQL> select count(*) from studyindex1;
COUNT()
----------
108631962
12:13:22 SQL> create index id_idx on studyindex1(id);
索引已建立。
14:19:32 SQL> commit;
提交完成。
14:22:51 SQL> select id,name,remark from studyindex1 where id=203;
已選擇38行。
執行計劃
----------------------------------------------------------
Plan hash value: 2350744396
--------------------------------------------------------------------------------
-----------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
Time |
--------------------------------------------------------------------------------
-----------
| 0 | SELECT STATEMENT | | 38 | 77444 | 43 (0)|
00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| STUDYINDEX1 | 38 | 77444 | 43 (0)|
00:00:01 |
|* 2 | INDEX RANGE SCAN | ID_IDX | 38 | | 3 (0)|
00:00:01 |
--------------------------------------------------------------------------------
-----------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("ID"=203)
Note
-----
- dynamic sampling used for this statement
統計資訊
----------------------------------------------------------
9 recursive calls
0 db block gets
154 consistent gets
312 physical reads
0 redo size
3663 bytes sent via SQL*Net to client
514 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
38 rows processed
14:23:28 SQL> drop index id_idx;
索引已刪除。
14:24:15 SQL> commit;
提交完成。
14:24:21 SQL> select id,name,remark from studyindex1 where id=203;
已選擇38行。
執行計劃
----------------------------------------------------------
Plan hash value: 469406081
--------------------------------------------------------------------------------
-
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
|
--------------------------------------------------------------------------------
-
| 0 | SELECT STATEMENT | | 12417 | 24M| 248K (1)| 00:49:47
|
|* 1 | TABLE ACCESS FULL| STUDYINDEX1 | 12417 | 24M| 248K (1)| 00:49:47
|
--------------------------------------------------------------------------------
-
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("ID"=203)
Note
-----
- dynamic sampling used for this statement
統計資訊
----------------------------------------------------------
169 recursive calls
0 db block gets
1121670 consistent gets
1053183 physical reads
0 redo size
3663 bytes sent via SQL*Net to client
514 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
4 sorts (memory)
0 sorts (disk)
38 rows processed
14:26:19 SQL>
SQL> insert into studyindex1 select rownum id,'db'dbms_random.value(
2 1,100) name,dbms_random.string('X',20) remark from dual connect by level<10
000000;
已建立9999999行。
SQL> commit;
提交完成。
SQL> select count(*) from studyindex1;
COUNT()
----------
108631962
12:13:22 SQL> create index id_idx on studyindex1(id);
索引已建立。
14:19:32 SQL> commit;
提交完成。
14:22:51 SQL> select id,name,remark from studyindex1 where id=203;
已選擇38行。
執行計劃
----------------------------------------------------------
Plan hash value: 2350744396
--------------------------------------------------------------------------------
-----------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|
Time |
--------------------------------------------------------------------------------
-----------
| 0 | SELECT STATEMENT | | 38 | 77444 | 43 (0)|
00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| STUDYINDEX1 | 38 | 77444 | 43 (0)|
00:00:01 |
|* 2 | INDEX RANGE SCAN | ID_IDX | 38 | | 3 (0)|
00:00:01 |
--------------------------------------------------------------------------------
-----------
Predicate Information (identified by operation id):
---------------------------------------------------
2 - access("ID"=203)
Note
-----
- dynamic sampling used for this statement
統計資訊
----------------------------------------------------------
9 recursive calls
0 db block gets
154 consistent gets
312 physical reads
0 redo size
3663 bytes sent via SQL*Net to client
514 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
38 rows processed
14:23:28 SQL> drop index id_idx;
索引已刪除。
14:24:15 SQL> commit;
提交完成。
14:24:21 SQL> select id,name,remark from studyindex1 where id=203;
已選擇38行。
執行計劃
----------------------------------------------------------
Plan hash value: 469406081
--------------------------------------------------------------------------------
-
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
|
--------------------------------------------------------------------------------
-
| 0 | SELECT STATEMENT | | 12417 | 24M| 248K (1)| 00:49:47
|
|* 1 | TABLE ACCESS FULL| STUDYINDEX1 | 12417 | 24M| 248K (1)| 00:49:47
|
--------------------------------------------------------------------------------
-
Predicate Information (identified by operation id):
---------------------------------------------------
1 - filter("ID"=203)
Note
-----
- dynamic sampling used for this statement
統計資訊
----------------------------------------------------------
169 recursive calls
0 db block gets
1121670 consistent gets
1053183 physical reads
0 redo size
3663 bytes sent via SQL*Net to client
514 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
4 sorts (memory)
0 sorts (disk)
38 rows processed
14:26:19 SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22275400/viewspace-749744/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Oracle】-【索引-HINT,執行計劃】-帶HINT的索引執行計劃Oracle索引
- mysql索引和執行計劃MySql索引
- Oracle訪問索引的執行計劃(一)Oracle索引
- Oracle訪問索引的執行計劃(二)Oracle索引
- Oracle訪問索引的執行計劃(三)Oracle索引
- Oracle訪問索引的執行計劃(四)Oracle索引
- Oracle訪問索引的執行計劃(五)Oracle索引
- ORACLE執行計劃Oracle
- clustering factor索引聚簇因子和執行計劃索引
- mysql 執行計劃索引分析筆記MySql索引筆記
- oracle 固定執行計劃Oracle
- Oracle sql執行計劃OracleSQL
- oracle sqlprofile 固定執行計劃,並遷移執行計劃OracleSQL
- oracle執行計劃------未走索引,隱式轉換的坑Oracle索引
- 【執行計劃】Oracle獲取執行計劃的幾種方法Oracle
- 建立索引調整sql的執行計劃索引SQL
- 關於索引的執行計劃記載索引
- Oracle執行計劃詳解Oracle
- oracle固定執行計劃--sqlprofileOracleSQL
- Oracle閱讀執行計劃Oracle
- oracle執行計劃相關Oracle
- oracle 執行計劃變更Oracle
- 【優化】Oracle 執行計劃優化Oracle
- oracle 執行計劃設定Oracle
- Oracle 執行計劃 分析和動態取樣Oracle
- 【MySQL】MySQL的執行計劃及索引優化MySql索引優化
- 建了索引執行計劃會有區別了索引
- 理解索引:MySQL執行計劃詳細介紹索引MySql
- 索引及排序對執行計劃的影響索引排序
- Oracle 執行計劃中access 和 filter的區別OracleFilter
- Oracle-繫結執行計劃Oracle
- 【SPM】Oracle如何固定執行計劃Oracle
- Oracle檢視執行計劃(五)Oracle
- Oracle檢視執行計劃(六)Oracle
- Oracle檢視執行計劃(一)Oracle
- Oracle檢視執行計劃(二)Oracle
- Oracle檢視執行計劃(三)Oracle
- Oracle檢視執行計劃(四)Oracle