16. 通過內部函式提高sql效率.
select h.empno,e.ename,h.hist_type,t.type_desc,count(*)
from history_type t,emp e,emp_history h
where h.empno = e.empno
and h.hist_type = t.hist_type
group by h.empno,e.ename,h.hist_type,t.type_desc;
通過呼叫下面的函式可以提高效率.
function lookup_hist_type(typ in number) return varchar2
astdesc varchar2(30);
cursor c1 is
select type_desc
from history_type
where hist_type = typ;
begin
open c1;
fetch c1 into tdesc;
close c1;
return (nvl(tdesc,』?』));
end;
function lookup_emp(emp in number) return varchar2
asename varchar2(30);
cursor c1 is
select ename
from emp
where empno=emp;
begin
open c1;
fetch c1 into ename;
close c1;
return (nvl(ename,』?』));
end;
select h.empno,lookup_emp(h.empno),
h.hist_type,lookup_hist_type(h.hist_type),count(*)
from emp_history h
group by h.empno , h.hist_type;
(譯者按: 經常在論壇中看到如 』能不能用乙個sql寫出….』 的貼子, 殊不知複雜的sql往往犧牲了執行效率. 能夠掌握上面的運用函式解決問題的方法在實際工作中是非常有意義的)
資料引用:http://www.knowsky.com/303146.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...