1. 程式人生 > >oracle 查詢不走索引的範例分析

oracle 查詢不走索引的範例分析

列名 name spa 增加 from 信息 插入 類型 字段

like 後%位置不走索引問題

create table t2 as select * from dba_objects;——創建表
create index idx_t2_name on t2(object_name);——創建索引
set autotrace on ——開啟執行計劃跟蹤
select * from t2 where object_name like ‘DE%‘;——走索引
select * from t2 where object_name like ‘%DE‘;——不走索引

查詢字段類型與表字段類型不一致導致隱式轉換,不走索引問題

create table t3(id varchar2(10),name varchar2(10));——創建表t3
insert into t3 select * from dba_objects;——插入數據
commit; ——提交
create index idx_t3_id on t3(id);創建id索引
set autotrace on——開啟執行計劃自動跟蹤
select * from t3 where id=7000;——不走索引,會出現隱式轉換,filter(TO_NUMBER("ID")=7000)
select * from t3 where id=‘7000‘;——走索引,cost大大提升

另:不要用select ‘*‘ from........寫select 星號時,oracle會查詢數據字典再轉換成具體的列名,增加oracle的開銷,建議寫具體字段名稱。
附:查詢表的索引信息
select INDEX_NAME,INDEX_TYPE,TABLE_OWNER,TABLE_NAME,TABLESPACE_NAME from user_indexes where table_name=‘T1‘;

oracle 查詢不走索引的範例分析