索引失效原因總結

2021-10-17 08:56:51 字數 543 閱讀 9146

前提:索引是建立好並且沒有失效的

1.sql層面

1.1)not in, not exist,會導致索引失效

1.2)like '%_' 百分號在前面,會導致索引失效

1.3)對索引列進行運算操作,會導致索引失效

eq:select t.*,t.rowid from tf_b_paylog t where t.acct_id-1=100

1.4)隱式轉換會導致索引失效(重點)

表字段定義為varchar型別,但在查詢時把該字段作為number型別以where條件傳給oracle。

1.5)對索引使用內部函式回導致索引失效

解決方案:建立函式索引

2.表層面

2.1)對小表進行查詢

2.2)建立的索引必須是變換量大

2.3)沒有進行表分析

3.組合(復合)索引

使用復合索引的時候,按照最左優先原則

eq:乙個表中有a、b、c三個字段組合的復合索引,按照a、ab、ac、abc去查詢都會走索引,如果按照其他組合形式的索引去查詢,並不會走索引。

索引失效原因總結

今天乙個同事突然問我索引為什麼失效。說實在的,失效的原因有多種 但是如果是同樣的sql如果在之前能夠使用到索引,那麼現在使用不到索引,以下幾種主要情況 1.隨著表的增長,where條件出來的資料太多,大於15 使得索引失效 會導致cbo計算走索引花費大於走全表 2.統計資訊失效 需要重新蒐集統計資訊...

索引失效原因總結

今天乙個同事突然問我索引為什麼失效。說實在的,失效的原因有多種 但是如果是同樣的sql如果在之前能夠使用到索引,那麼現在使用不到索引,以下幾種主要情況 1.隨著表的增長,where條件出來的資料太多,大於15 使得索引失效 會導致cbo計算走索引花費大於走全表 2.統計資訊失效 需要重新蒐集統計資訊...

索引失效原因總結

1.隨著表的增長,where條件出來的資料太多,大於15 使得索引失效 會導致cbo計算走索引花費大於走全表 2.統計資訊失效 需要重新蒐集統計資訊 3.索引本身失效 需要重建索引 下面是一些不會使用到索引的原因 索引失效 1 沒有查詢條件,或者查詢條件沒有建立索引 2 在查詢條件上沒有使用引導列 ...