8.
使用
decode函式來減少處理時間
使用decode
函式可以避免重複掃瞄相同記錄或重複連線相同的表.例如
:select count(*)
,sum(sal)
from
empwhere dept_no = 0020
and ename like
『**ith%』;
select count(*)
,sum(sal)
from
empwhere dept_no = 0030
and ename like
『**ith%』;
你可以用
decode
函式高效地得到相同結果
select count(decode(dept_no,0020,』x』,null)) d0020_count,
count(decode(dept_no,0030,』x』,null)) d0030_count,
sum(decode(dept_no,0020,sal,null)) d0020_sal,
sum(decode(dept_no,0030,sal,null)) d0030_sal
from emp where ename like 『**ith%』;
類似的,decode
函式也可以運用於
group by
和order by
子句中.
9.
整合簡單
,無關聯的資料庫訪問
,
你可以把它們整合到乙個查詢中
(即使它們之間沒有關係)例如
:select name
from emp
where emp_no = 1234;
select name
from dpt
where dpt_no = 10 ;
select name
from cat
where cat_type = 『rd』;
上面的3
個查詢可以被合併成乙個
:select e.name , d.name , c.name
from cat c , dpt d , emp e,dual x
where nvl(『x』,x.dummy) = nvl(『x』,e.rowid(+))
and nvl(『x』,x.dummy) = nvl(『x』,d.rowid(+))
and nvl(『x』,x.dummy) = nvl(『x』,c.rowid(+))
and e.emp_no(+) = 1234
and d.dept_no(+) = 10
and c.cat_type(+) = 『rd』;
(譯者按
: 雖然採取這種方法
,效率得到提高
,但是程式的可讀性大大降低
,所以讀者
還是要權衡之間的利弊
)
10.
刪除重覆記錄
最高效的刪除重覆記錄方法
( 因為使用了
rowid)
delete from emp e
where e.rowid > (select min(x.rowid)
from emp x
where x.emp_no = e.emp_no);
11.
用
truncate替代
delete
當刪除表中的記錄時
,在通常情況下
, 回滾段
(rollback segments )
用來存放可以被恢復的資訊
. 如果你沒有
***mit
事務,oracle
會將資料恢復到刪除之前的狀態
(準確地說是
恢復到執行刪除命令之前的狀況
)而當運用
truncate時,
回滾段不再存放任何可被恢復的資訊
.當命令執行後
,資料不能被恢復
.因此很少的資源被呼叫
,執行時間也會很短
.(譯者按
: truncate只在刪除全表適用
,truncate是
ddl不是
dml)
12.
盡量多使用
***mit
只要有可能
,在程式中盡量多使用
***mit,
這樣程式的效能得到提高
,需求也會因為
***mit
所釋放的資源而減少
:***mit
所釋放的資源:a.
回滾段上用於恢復資料的資訊.b.
被程式語句獲得的鎖
c.redo log buffer
中的空間
d.oracle
為管理上述
3種資源中的內部花費
(譯者按
: 在使用
***mit時必須要注意到事務的完整性
,現實中效率和事務完整性往往是魚和熊掌不可得兼
)
(摘錄自csdn)
ORACLE SQL效能優化系列
1.選用適合的 oracle 優化器 oracle 的優化器共有3種 a.rule 基於規則 b.cost 基於成本 c.choose 選擇性 設定預設的優化器 可以通過對 init.ora 檔案中optimizer mode 引數的各種宣告,如 rule,cost,choose,all rows,...
ORACLE SQL效能優化系列
1.選用適合的oracle優化器 oracle的優化器共有3種 a.rule 基於規則 b.cost 基於成本 c.choose 選擇性 設定預設的優化器,可以通過對init.ora檔案中optimizer mode引數的各種宣告,如rule,cost,choose,all rows,first r...
Oracle SQL效能優化系列
1.選用適合的oracle優化器 oracle的優化器共有3種 a.rule 基於規則 b.cost 基於成本 c.choose 選擇性 設定預設的優化器,可以通過對init.ora檔案中optimizer mode引數的各種宣告,如rule,cost,choose,all rows,first r...