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;使用萬用字元的情況下oracle可能會停用該索引。如 :高效:(索引有效) select … from department where dept_code >=0;
6.注意萬用字元%的影響
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語句 有時被稱為...