oracle查詢效能優化

2022-09-22 04:48:07 字數 1014 閱讀 9246

1.where子句中的連線順序

oracle採用自下而上的順序解析,那些可以過濾掉最大數量記錄的條件必須寫在where子句的末尾,尤其是「主鍵id=?」這樣的條件

2.select子句中避免使用 『 * 『

oracle在解析的過程中, 會將'*' 依次轉換成所有的列名, 這個工作是通過查詢資料字典完成的, 這意味著將耗費更多的時間。對於查詢語句,由於全表掃瞄讀取的資料多,尤其是對於大型表不僅查詢速度慢,而且對磁碟io造成大的壓力,通常都要避免,而避免的方式通常是使用索引index 

3.避免在索引列上使用not

當oracle」遇到」not,他就會停止使用索引轉而執行全表掃瞄

4.避免在索引列上使用計算

where子句中,如果索引列是函式的一部分.優化器將不使用索引而使用全表掃瞄. 舉例:

低效:select … from dept where sal * 12 > 25000;

高效:select … from dept where sal > 25000/12;

5.避免在索引列上使用is null和is not null

低效:(索引失效) select … from department where dept_code is not null;

高效:(索引有效) select … from department where dept_code >=0;

6.注意萬用字元%的影響

使用萬用字元的情況下oracle可能會停用該索引。如 :

select…from department where dept_code like 『%123456%'(無效)。

select…from department where dept_code = 『123456'(有效)

oracle之date 查詢效能優化

建立測試表 created table test id varchar2 20 not null,dtime date 插入6000000資料 declare i number k number begin k 0 for i in 1 6000000 loop insert into test i...

oracle效能優化

今天有個問題沒有答上來 oracle的效能優化。查了查資料,學習學習。優化心得摘抄 資料庫優化oracle9i 很多的時侯,做oracle dba的我們,當應用管理員向我們通告現在應用很慢 資料庫很慢的時侯,我們到資料庫時做幾個示例的select也發現同樣的問題時,有些時侯我們會無從下手,因為我們認...

oracle效能優化

sql共享原理 為了不重複解析相同的sql語句,在第一次解析之後,oracle將sql語句存放在記憶體中。這塊位於系統全域性區域sga systemglobal area 的共享池 shared buffer poo1 中的記憶體可以被所有的資料庫使用者共享。因此,當你執行乙個sql語句 有時被稱為...