Oracle查看執行計劃

通過執行計劃查看SQL語句是否使用了索引

1、生成執行計劃
explain plan for sql語句
2、查看執行計劃結果
select plan_table_output from TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE'));

在這裏插入圖片描述
如上圖所示:TABLE ACCESS FULL爲全表掃描


幾種常見的索引類型掃描:

一、index unique scan

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

二、index range scan

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

三、index full scan

全索引掃描,如果要查詢的數據可以全部從索引中獲取,則使用全索引掃描。

四、index fast full scan

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


不走索引的幾種情況:

  • 1、where子句中使用 is null 和 is not null
  • 2、where子句中使用函數
  • 3、like查詢以%開頭
  • 4、where子句中使用不等於操作(包括:<>, !=, not colum >= ?, not colum <= ? ,可以使用or代替)
  • 5、在列上做運算
  • 6、條件中用or
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章