我正在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'運行查詢併發布輸出。這將顯示哪部分查詢很昂貴。 –