1. 程式人生 > >oracle強制索引(轉)

oracle強制索引(轉)

你指的是用hints去提示你查詢語句去使用哪個索引。
SELECT   /*+INDEX(TABLE INDEX_NAME)*/ FROM TABLE 
可以提示ORACLE 去使用TABLE 表上已經建好的INDEX_NAME。ORACLE 官方文件上說過,這並不是強制的,僅僅是提示,優化器可能會選擇這個索引,也可能不選擇。不過絕大部分情況會按照提示的去做!

hints是oracle提供的一種機制,用來告訴優化器按照我們的告訴它的方式生成執行計劃。我們可以用hints來實現:

  1) 使用的優化器的型別

  2) 基於代價的優化器的優化目標,是all_rows還是first_rows。

  3) 表的訪問路徑,是全表掃描,還是索引掃描,還是直接利用rowid。

  4) 表之間的連線型別

  5) 表之間的連線順序

  6) 語句的並行程度

  2、HINT可以基於以下規則產生作用

  表連線的順序、表連線的方法、訪問路徑、並行度

  3、HINT應用範圍

  dml語句

  查詢語句

  4、語法
  {DELETE|INSERT|SELECT|UPDATE} /*+ hint [text] [hint[text]]... */
  or
  {DELETE|INSERT|SELECT|UPDATE} --+ hint [text] [hint[text]]...
  如果語(句)法不對,則ORACLE會自動忽略所寫的HINT,不報錯