程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 使用Oracle函數索引 提高查詢效率

使用Oracle函數索引 提高查詢效率

編輯:Oracle數據庫基礎

使用Oracle函數索引,無疑是提高查詢效率的有效方法之一。下面就為您詳細介紹Oracle函數索引的使用方法,希望對您能有所幫助。

談到任何對列的操作都可能導致全表掃描,例如:

  1. select * from emp where substr(ename,1,2)=’SM’; 

但是這種查詢在客服系統又經常使用,我們可以創建一個帶有substr函數的基於Oracle函數索引,

  1. create index emp_ename_substr on eemp ( substr(ename,1,2) ); 

但是這種查詢在客服系統又經常使用,我們可以創建一個帶有substr函數的Oracle函數索引,

  1. create index emp_ename_substr on eemp ( substr(ename,1,2) ); 

這樣在執行上面的查詢語句時,這個基於函數的索引將排上用場,執行計劃將是(INDEX RANGE SCAN)。
上面的例子中,我們創建了基於函數的索引,但是如果執行下面的查詢:

  1. select * from emp where substr(ename,1,1)=’S’ 

得到的執行計劃將還是(TABLE Access FULL),因為只有當數據列能夠等式匹配時,基於函數的索引才能生效,這樣對於這種索引的計劃和維護的要求都很高。請注意,向表中添加索引是非常危險的操作,因為這將導致許多查詢執行計劃的變更。然而,如果我們使用基於函數的索引就不會產生這樣的問題,因為Oracle只有在查詢使用了匹配的內置函數時才會使用這種類型的索引。
 

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