问题
在t_freeproduct_info
表prod_id varchar2(100)
字段加上索引后,使用
SELECT * FROM t_freeproduct_info t
where t.prod_id = 13;
查询时发现速度并没有提升
原因
Oracle中存在建立了索引,查询也未用到的现象,即索引失效,能够引起索引失效的现象主要有:
- 未使用WHERE条件 0.0
- 使用
NULL
和IS NULL
作为条件 - 使用
<>
、!=
、NOT IN
、NOT EXIST
等这类不等于操作 - 查询条件使用函数,如
to_char()
等 - 不匹配的数据类型,如问题中,索引字段为varchar2类型,查询条件中却使用int类型
- 使用
LIKE '%T'
语句中%在前面的
原语句修改为
SELECT * FROM t_freeproduct_info t
where t.prod_id = '13';