or為什么導致索引失效?
Oracle 索引的目標是避免全表掃描提高性能。
oracle 索引有一些限制條件,如果你違反了這些索引限制條件,那么即使你已經加了索引,oracle還是會執行一次全表掃描,查詢的性能不會比不加索引有所提高,反而可能由于數據庫維護索引的系統開銷造成性能更差。 下面就是總結的能使 Oracle 索引失效的六大限制條件。
1. 沒有 WHERE 子句
2. 使用 IS NULL 和 IS NOT NULL
3. WHERE 子句中使用函數
如果沒有使用基于函數的索引,那么 where 子句中對存在索引的列使用函數時,會使優化器忽略掉這些索引。
4. 使用 LIKE ‘%T’ 進行模糊查詢
5. 等于和范圍索引不會被合并使用
job 和 deptno 都是非唯一索引,這種條件下 oracle 不會合并索引,它只會使用第一個索引。
6. 比較不匹配數據類型