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

2021-09-21 00:05:12 字數 1020 閱讀 5459

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的方式 你的表的統計資訊 最可能的原因 你的表很小,...