我覺得主要應該從5個方面進行調整:
1.去掉不必要的大型表的全表掃瞄
2.快取小型表的全表掃瞄
3.檢驗優化索引的使用
4.檢驗優化的連線技術
5.盡可能減少執行計畫的cost
現在簡單的舉幾個例子
where子句中有「!=」將不使用索引
select account_name from test where amount != 0 (不使用)
select account_name from test where amount > 0 (使用)
where條件中對字段增加處理函式將不使用該列的索引
select * from emp where to_char(hire_date,'yyyymmdd')='20080411' (不使用)
select * from emp where hire_date = to_char('20080411','yyyymmdd') (使用)
避免在索引列上使用is null和 is not null
select * from emp where dept_code is not null (不使用)
select * from emp where dept_code > 0 (使用)
萬用字元% 的使用
select * from emp where name like '%a' (不使用索引)
select * from emp where name like 'a%' (使用索引)
Oracle SQL 效能優化技巧
sun2004發表於 2008 12 25 11 28 眾所周知,資料庫設計的好壞直接關係到資料庫執行的效率。根據筆者的經驗,對於提公升資料庫效能來說,合理的資料庫設計,比公升級伺服器的硬體配置,還要來的有效。但是,筆者無論是在跟同事合作,又或者是在論壇上跟相關同行交流的時候,總是會發現有些人有一些...
Oracle Sql優化筆記
基本的sql編寫注意事項 需要注意的是,隨著oracle的公升級,查詢優化器會自動對sql語句進行優化,某些限制可能在新版本的oracle下不再是問題。尤其是採用cbo cost based optimization,基於代價的優化方式 時。我們可以總結一下可能引起全表掃瞄的操作 oracle優化器...
Oracle Sql優化筆記
基本的sql 編寫注意事項 需要注意的是,隨著oracle的公升級,查詢優化器會自 動對sql語句 進行優化,某些限制可能在新版本的oracle下不再是問題。尤其是採用 cbo cost based optimization 基於代價的 優化方式 時。我們可以 總結一下可能引起全表 掃瞄的操作 or...