oracle 查詢不走索引的範例分析
阿新 • • 發佈:2018-01-20
列名 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 查詢不走索引的範例分析