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 查詢不走索引的範例分析
oracle 11g中有個新特性,當表無資料時,不分配segment,以節省空間。alter system set deferred segment creation false 該引數值預設是true,當改為false時,無論是空表還是非空表,都分配segment。需注意的是 該值設定後對以前匯入...
Oracle不走索引的原因
在oracle資料庫操作中,為什麼有時乙個表的某個字段明明有索引,當觀察一些語的執行計畫確不走索引呢?如何解決呢?本文我們主要就介紹這部分內容,接下來就讓我們一起來了解一下 不走索引大體有以下幾個原因 你在instance級別所用的是all rows的方式 你的表的統計資訊 最可能的原因 你的表很小...
Oracle不走索引的原因
oracle資料庫操作中,為什麼有時乙個表的某個字段明明有索引,當觀察一些語的執行計畫確不走索引呢?如何解決呢?本文我們主要就介紹這部分內容,接下來就讓我們一起來了解一下 不走索引大體有以下幾個原因 你在instance級別所用的是all rows的方式 你的表的統計資訊 最可能的原因 你的表很小,...