我试验在char 或 varchar2 列上建索引, create table tmp
(id number,
name1 varchar2(2000),
name2 char(2000),
name3 char(2000)) 然后插入10000行数据, then
create index index_tmp1 on tmp(name1);
create index index_tmp2 on tmp(name2); set autotrace traceonly; select * from tmp where name1 like '%dfd%';
结果不使用索引,
select * from tmp where name1 like 'dfd%';
结果不使用索引,
select * from tmp where name2 like '%dfd%';
结果不使用索引,
select * from tmp where name2 like 'dfd%';
结果使用索引, 问题:为什么在varchar2上总是不使用索引呢?
并不是在varchar2总不使用索引,
而是varchar2(2000)上不使用,
在 varchar2(10)却使用.
???
当使用索引的查询开销达到变历全表的80%时,oracle可能不使用索引。
因为2000长了。