ORACLE SQL效能優化系列(六)

2021-04-25 00:47:53 字數 1145 閱讀 5771

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 ) 用來存放可以被恢復的資訊. 如果你沒有commit事務,oracle會將資料恢復到刪除之前的狀態(準確地說是

恢復到執行刪除命令之前的狀況)

而當運用truncate時, 回滾段不再存放任何可被恢復的資訊.當命令執行後,資料不能被恢復.因此很少的資源被呼叫,執行時間也會很短.

(譯者按: truncate只在刪除全表適用,truncate是ddl不是dml)

資料引用:http://www.knowsky.com/303144.html 

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...