2015-03-03 54 views
1

我有以下查詢,可以對來自不同表的2列進行分組。我明白這可能會導致性能問題。我不確定如何去優化這個。任何幫助是極大的讚賞!避免來自不同表的GROUP BY列的MySQL

查詢

SELECT tableA.col AS tableAcol, 
     tableB.col AS tableBcol, 
     SUM(tableB.count) AS total 
FROM tableB, tableA 
WHERE tableB.uid = tableA.uid 
AND tableA.eid=? 
GROUP BY tableA.col, tableB.col 

回答

0

可以使用執行部分和子查詢,以減少在外部查詢的JOIN該總和的大小。

SELECT tableA.col AS tableAcol 
     tableBgrouped.col AS tableBcol, 
     SUM(tableBgrouped.count) AS total 
FROM tableA 
JOIN (SELECT uid, col, SUM(count) AS count 
     FROM tableB 
     GROUP BY uid, col) AS tableBgrouped 
ON tableA.uid = tableBgrouped.uid 
WHERE tableA.eid = ? 
GROUP BY tableAcol, tableBcol 
0
SELECT A.`col` AS tableAcol 
     B.`col` AS tableBcol, 
     SUM(B.`count`) AS total 
FROM tableA A 
JOIN (SELECT B1.`uid`, B1.`col`, SUM(B1.`count`) AS count 
     FROM tableB B 
     GROUP BY B1.`uid`, B1.`col`) AS B 
ON A.`uid` = B.`uid` 
WHERE A.`eid` = ? 
GROUP BY A.`col`, B.`col`