Oracle 通過執行計畫檢視查詢語句是否使用索引

2021-10-16 13:23:35 字數 1333 閱讀 2045

閱讀目錄

回到頂部

explain plan for

select * from t_call_records where t_bjhm='123456'

備註:explain plan for後面為要生成執行計畫的查詢語句

回到頂部

如上圖所示,table access full為全表掃瞄;

為t_bjhm列加上索引後生成執行計畫並檢視結果:

如上圖所示,index range scan為索引範圍掃瞄;

回到頂部

第一種:index unique  scan

索引唯一掃瞄,當可以優化器發現某個查詢條件可以利用到主鍵、唯一鍵、具有外來鍵約束的列,或者只是訪問其中某行索引所在的資料的時候,優化器會選擇這種掃瞄型別。

第二種:index range scan

索引範圍掃瞄,當優化器發現在unique列上使用了大於、小於、大於等於、小於等於以及between等就會使用範圍掃瞄,在組合列上只使用部分進行查詢,導致查詢出多行資料。對非唯一的索引列上進行任何活動都會使用index range scan。

第三種:index full scan

全索引掃瞄,如果要查詢的資料可以全部從索引中獲取,則使用全索引掃瞄。

第四種:index fast full scan

索引快速掃瞄,掃瞄索引中的全部的資料塊,與全索引掃瞄的方式基本上類似。兩者之間的明顯的區別是,索引快速掃瞄對查詢的資料不進行排序,資料返回的時候不是排序的。「在這種訪問方法中,可以使用多塊讀功能,也可以使用並行讀入,從而得到最大的吞吐量和縮短執行時間」。

order by、group by使用索引的前提條件:

1.order by、group by中所有的列必須包含在相同的索引中並保持在索引中的排列順序;

2.order by、group by中所有的列必須定義為非空

回到頂部

1.where子句中使用 is null 和 is not null

2.where子句中使用函式

3.使用like 『%t』 進行模糊查詢

4.where子句中使用不等於操作(包括:<>, !=, not colum >= ?, not colum <= ? ,可以使用or代替)

人生苦短,我用python!

Oracle 執行計畫檢視

第一種 explain plan命令 plsql devoloper中的f5鍵在內部也是呼叫的此命令 用法 依次執行以下語句 explain plan for 目標sql select from table dbms xplan.display 第二種 使用dbms xplan包 1 select ...

ORACLE檢視執行計畫

sql oracle home rdbms admin utlxplan.sql 表已建立。這個指令碼只是建立一張plan table表 sql oracle home sqlplus admin plustrce.sql 這個指令碼建立plustrace並授權 sql drop role plus...

怎樣通過命令在ORACLE中檢視執行計畫

變數宣告 帶引數sql語句時使用 var b1 varchar2 100 var b2 varchar2 100 var bn varchar2 100 給引數賦值 exec b1 20060718 exec b2 exec bn 環境設定 spool後面跟sql語句執行後的輸出檔名 set lin...