积极答复者
SQL优化

问题
-
SELECT V.C3,
V.CA6,
V.PID,
V.YEAR1,
V.DJ1 / C.DELIVERYNUMBER AS INSTALLRATE
FROM ((SELECT C3,
C6,
YEAR1,
ID,
SUM(DJ1) AS DJ1
FROM A6
GROUP BY C3,
C6,
YEAR1,
ID) V
JOIN (SELECT C3,
C6,
YEAR1,
SUM(DJ2) AS DJ2
FROM A4
GROUP BY CA3,
CA6,
YEAR1) C
ON V.C3 = C.C3
AND V.C6 = C.C6
AND V.YEAR1 = C.YEAR1 )
答案
-
优化的话,需要还是考虑组合索引吧。
;with t1 as ( SELECT C3,C6,YEAR1,ID,SUM(DJ1) AS DJ1 FROM A6 GROUP BY C3, C6, YEAR1, ID ),t2 as ( SELECT C3, C6, YEAR1, SUM(DJ2) AS DJ2 FROM A4 GROUP BY CA3, CA6, YEAR1) select t1.*,t1.DJ1/t2.DJ2 as INSTALLRATE from t1 join t2 on t1.C3 = t2.C3 AND t1.C6 = t2.C6 AND t1.YEAR1 = t2.YEAR1
- 已标记为答案 Molly Chen_Moderator 2012年7月13日 7:55
全部回复
-
写错了!
SELECT V.C3,
V.CA6,
V.PID,
V.YEAR1,
V.DJ1 / C.DJ2 AS INSTALLRATE
FROM ((SELECT C3,
C6,
YEAR1,
ID,
SUM(DJ1) AS DJ1
FROM A6
GROUP BY C3,
C6,
YEAR1,
ID) V
JOIN (SELECT C3,
C6,
YEAR1,
SUM(DJ2) AS DJ2
FROM A4
GROUP BY CA3,
CA6,
YEAR1) C
ON V.C3 = C.C3
AND V.C6 = C.C6
AND V.YEAR1 = C.YEAR1 ) -
优化的话,需要还是考虑组合索引吧。
;with t1 as ( SELECT C3,C6,YEAR1,ID,SUM(DJ1) AS DJ1 FROM A6 GROUP BY C3, C6, YEAR1, ID ),t2 as ( SELECT C3, C6, YEAR1, SUM(DJ2) AS DJ2 FROM A4 GROUP BY CA3, CA6, YEAR1) select t1.*,t1.DJ1/t2.DJ2 as INSTALLRATE from t1 join t2 on t1.C3 = t2.C3 AND t1.C6 = t2.C6 AND t1.YEAR1 = t2.YEAR1
- 已标记为答案 Molly Chen_Moderator 2012年7月13日 7:55