1、聯(lián)合索引房铭,查詢條件沒有聯(lián)合索引的第一列暮屡。
2瑟匆、在包含有null值的table列上建立索引,當(dāng)時(shí)使用select count(*) from table時(shí)不會(huì)使用索引栽惶。
3愁溜、在索引列上使用函數(shù)時(shí)不會(huì)使用索引,如果一定要使用索引只能建立函數(shù)索引外厂。
Where條件中對(duì)字段增加處理函數(shù)將不使用該列的索引
select * from emp where to_char(hire_date,'yyyymmdd')='20080411' (不使用)
select * from emp where hire_date = to_char('20080411','yyyymmdd') (使用)
4冕象、當(dāng)被索引的列進(jìn)行隱式的類型轉(zhuǎn)換時(shí)不會(huì)使用索引。
select * from t where indexed_column = 5汁蝶,而indexed_column列建立索引但類型是字符型
5渐扮、使用 IS NULL 和 IS NOT NULL
SELECT ... FROM emp WHERE comm IS NULL; comm 列的索引會(huì)失效
6论悴、使用 LIKE ‘%T’ 進(jìn)行模糊查詢,要走索引墓律,like的后面不能以%開頭
7膀估、WHERE 子句中使用不等于操作
不等于操作包括:<>, !=, NOT colum >= ?, NOT colum <= ?
對(duì)于這個(gè)限制條件可以通過 OR 替代,例如: colum <> 0 ===> colum>0 OR colum<0
8耻讽、等于和范圍索引不會(huì)被合并使用
SELECT emp_id, emp_m, salary_q ... FROM emp WHERE job='manager' AND deptno>10
job 和 deptno 都是非唯一索引察纯,這種條件下 oracle 不會(huì)合并索引,它只會(huì)使用第一個(gè)索引针肥。