oracle強制索引(轉)
阿新 • • 發佈:2019-01-24
你指的是用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,不報錯