如何讓ORACLE索引不起作用 不可見

2021-05-25 14:45:39 字數 708 閱讀 4153

如何讓oracle索引不起作用(不可見)

我們先建立乙個表t1,在t1的table_name欄位上新建乙個索引idx_t1_table_name。

ok,從上面我們可以看到索引很正常。那現在假設我們不再需要這個索引了,因此想刪除它,但又不知道會不會有本文開頭所說的風險。如果可以刪除前先把索引不可見,確認沒問題後再刪除,這樣就沒問題了,為此,oracle11g推出新的功能,設定索引是否可見,示例如下:

以上是oracle11g的處理方法,但是在oracle9i或oracle10g中索引沒有invisible的功能,我們如何處理呢?

現在oracle資料庫一般都採用基於成本的計算方法來生成執行計畫,只要索引的成本更低,oracle就會選擇使用索引,ok,那我們只要告訴oracle使用這個索引成本很高,它就不會使用這個索引,這樣就達到了暫時讓索引不可用的效果。相信很多人都知道oracle提供了dbms_stats包來管理對像的統計資訊,通過dbms_stats.set_index_stats函式我們可以強制設定統計資訊,現在我們只要把索引的成本設定成非常大即可,如下所示:

使用統計資訊騙oracle不使用索引的方法是偏門,如果是oracle11g 建議還是直接使用invisible更好。

為了更好的進行索引管理,oracle還提供了索引監視的功能,這樣可以準確的確認索引還有沒有使用。語法如下:

mking

2011-05-29

Transactional不起作用如何排查問題。

按照以下幾個步驟逐一確認 1 首先要看資料庫本身對應的庫 表所設定的引擎是什麼。myisam不支援事務,如果需要,則必須改為innnodb。2 transactional所註解的方法是否為public 3 transactional所註解的方法所在的類,是否已經被註解 service或 compon...

jquery ajax return不起作用

最近做專案時,發現乙個問題,但卻不知道怎麼改,耐著性子問了一下午的度娘,終於找到答案 問題 jquery ajax提交,return值一直都無法獲取 原因 ajax請求和後面的處理是非同步執行的,也就是說,有可能ajax還沒執行完,還沒走到return的部分,ajax請求後面的 已經執行完畢 所以a...

setMargins不起作用

在用viewpage做廣告滾動的效果,根據 的數量,每個 生成乙個圓點用來表示,當前 滾動的位置,但是用layoutparams 物件設定圓點的高和寬都正常,用setmargins設定圓點的間距卻無效,請高手解答 private void initui context context else ml...