有2个表,表一INVENTORY为商品详细信息表,CODE为商品代码,可做为主键:
ID  CODE   NAME    PRICE  
------------------------
1   V01    TOMATO  20.00  
2   F01    APPLE   10.00  表二SALE为销售详细信息表。
ID  CODE   NAME   PRICE    DATE     QTY
----------------------------------------
1   V01   TOMATO  20.00   20080201    5
2   F01   APPLE   10.00   20080203    6
3   F01   APPLE   10.00   20080204   10
4   V01   TOMATO  20.00   20080204   10 现要求查询所有商品的详细信息及其累计销售总数量,即得出以下结果集:
CODE  NAME    PRICE  SOLD
--------------------------
V01   TOMATO  20.00    15
F01   APPPLE  10.00    16我先将SALE表按照CODE分组累加出每种商品的总销售量,并将结果保存在一个临时表SALE_SOLD中:
CREATE TEMPORARY TABLE SALE_SOLD(SELECT CODE ,SUM(QTY) AS SOLD FROM SALE GROUP BY CODE);然后用INVENTORY表按照CODE来left join临时表SALE_SOLD,得出结果即为商品详细信息及销售总量:
SELECT A.CODE,A.NAME,A.PRICE,B.SOLD FROM INVENTORY AS A LEFT JOIN SALE_SOLD AS B ON A.CODE = B.CODE;我这样做的话当两个表中记录不多的时候没有问题,但是一旦表中记录达到上万条,查询速度就会变得非常慢,甚至造成内存错误,请问我应该如何进行优化?