我正在mySQL服务器上运行更新查询/子查询,需要12分钟才能完成,我认为它不够优化。需要一种方法来优化慢SQL查询?
无论如何有人会想到优化它,所以它可以运行得更快吗?
在此先感谢。
UPDATE `TABLE_1` C
INNER JOIN(
SELECT Cust_No,
#current year sales
(SELECT SUM(`Sales`)
FROM `TABLE_2`
WHERE Year = 2016
AND Cust_No = p.Cust_No
) as CY_TOTAL_SALES,
# Get previou year sales
(SELECT SUM(`Sales`)
FROM `TABLE_2`
WHERE Year = 2015
AND Cust_No = p.Cust_No
) as PY_TOTAL_SALES
FROM `TABLE_2` p
WHERE Year >= 2015
AND Year <= 2016
) AS A ON C.`customer_number` = A.Cust_No
SET C.CY_TOTAL_SALES = A.CY_TOTAL_SALES,
C.PY_TOTAL_SALES = A.PY_TOTAL_SALES;
TABLE_1包含28000条记录(CUSTOMER_NUMBER领域是独一无二的,编入索引建)
TABLE_2包含25万条记录(CUST_NO不是唯一的,但编入索引建)
它就是更新TABLE_1通过加入Table_2并使用子查询总结TABLE_2中两年的总销售额值,然后将值更新回TABLE_1 WHERE TABLE_1定制员编号与TABLE_2 Cust_no匹配。
用'EXPLAIN'运行查询并发布输出。这将显示哪部分查询很昂贵。 –