0
差異更好的代碼開發
select CE1.CLASS_ID,
CE1.LOCATION_ID,
count(case CE1.FORMAT_ID when 5 then 1 end) as LIVE,
count(case CE1.FORMAT_ID when 14 then 1 end) as LB,
count(case CE1.FORMAT_ID when 15 then 1 end) as WEB,
SUM(DECODE (CE1.ROLE_ID,5,1,0)) FACULTY,
SUM(DECODE (CE1.ROLE_ID ,2,1,0)) MODERATOR,
SUM(DECODE (CE1.ROLE_ID ,3,1,0)) PANELIST,
SUM(DECODE (CE1.ROLE_ID,4,1,0)) PRESENTER,
COUNT(CE1.USER_ID) TOT
from C_EDUCATION1 CE1
GROUP BY CE1.LOCATION_ID, CE1.CLASS_ID
我們正在開發現有系統和我們發現混合使用COUNT和解碼。 如果我們理解正確,我們可以轉換爲以下代碼。
select CE1.CLASS_ID,
CE1.LOCATION_ID,
SUM(DECODE (CE1.FORMAT_ID ,5,1,0)) LIVE,
SUM(DECODE (CE1.FORMAT_ID ,14,1,0)) LB,
SUM(DECODE (CE1.FORMAT_ID,15,1,0)) WEB,
SUM(DECODE (CE1.ROLE_ID,5,1,0)) FACULTY,
SUM(DECODE (CE1.ROLE_ID ,2,1,0)) MODERATOR,
SUM(DECODE (CE1.ROLE_ID ,3,1,0)) PANELIST,
SUM(DECODE (CE1.ROLE_ID,4,1,0)) PRESENTER,
COUNT(CE1.USER_ID) TOT
from C_EDUCATION1 CE1
GROUP BY CE1.LOCATION_ID, CE1.CLASS_ID
OR 所有COUNT
我們想知道在其他性能問題上的分歧,或。 更好的方式存在嗎?
我不知道使用CASE與DECODE之間的性能差異,但CASE是ANSI,因此如果DECODE被換出爲CASE,查詢將更具可移植性。我會考慮將DECODE棄用,但爲了向後兼容,它永遠不會消失。 – 2011-01-26 17:21:40