問題
在t_freeproduct_info
表prod_id varchar2(100)
字段加上索引后,使用
SELECT * FROM t_freeproduct_info t
where t.prod_id = 13;
查詢時發(fā)現(xiàn)速度并沒有提升
原因
Oracle中存在建立了索引,查詢也未用到的現(xiàn)象,即索引失效募闲,能夠引起索引失效的現(xiàn)象主要有:
- 未使用WHERE條件 0.0
- 使用
NULL
和IS NULL
作為條件 - 使用
<>
、!=
、NOT IN
忽孽、NOT EXIST
等這類不等于操作 - 查詢條件使用函數(shù),如
to_char()
等 - 不匹配的數(shù)據(jù)類型谢床,如問題中兄一,索引字段為varchar2類型,查詢條件中卻使用int類型
- 使用
LIKE '%T'
語句中%在前面的
原語句修改為
SELECT * FROM t_freeproduct_info t
where t.prod_id = '13';