程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 創建索引對SQL語句執行的影響

創建索引對SQL語句執行的影響

編輯:Oracle數據庫基礎

一、創建索引對執行計劃的影響

在SQL開始執行之前,Oracle會確定SQL語句的執行計劃,並按照執行計劃的步驟訪問相應的表和索引。

一旦執行計劃確定下來,Oracle會按照這個執行計劃完成SQL語句的執行,在SQL語句執行開始之後建立的索引不會改變SQL語句的執行計劃。

因此,創建索引不會對執行計劃有任何的影響,也就不會對運行中的SQL語句有影響。下面通過一個例子簡單驗證一下:

SQL> CREATE TABLE TEST (ID NUMBER, FID NUMBER, NAME VARCHAR2(30), BID_COLUMNS CHAR(2000));

Table created.

SQL> INSERT INTO TEST VALUES (1, 0, 'OBJECT', '0');

1 row created.

SQL> INSERT INTO TEST VALUES (2, 1, 'TABLE', '0');

1 row created.

SQL> INSERT INTO TEST VALUES (3, 1, 'INDEX', '0');

1 row created.

SQL> INSERT INTO TEST VALUES (4, 1, 'VIEW', '0');

1 row created.

SQL> INSERT INTO TEST VALUES (5, 1, 'SYNONYM', '0');

1 row created.

SQL> INSERT INTO TEST VALUES (6, 1, 'SOURCE', '0');

1 row created.

SQL> INSERT INTO TEST SELECT 20000+ROWNUM, 2, TABLE_NAME, '0' FROM DBA_TABLES;

874 rows created.

SQL> INSERT INTO TEST SELECT 30000+ROWNUM, 3, INDEX_NAME, '0' FROM DBA_INDEXES;

1074 rows created.

SQL> INSERT INTO TEST SELECT 40000+ROWNUM, 4, VIEW_NAME, '0' FROM DBA_VIEWS;

2929 rows created.

SQL> INSERT INTO TEST SELECT 50000+ROWNUM, 5, TABLE_NAME,

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved