私は、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はTABLE_2は何それがないことは、更新TABLE_1ある25万記録(CUST_NOは一意ではありませんが、構築されたインデックスを作成しました)
が含まれている28,000記録(CUSTOMER_NUMBERフィールドが固有で構築されたインデックスを作成しました)
が含まれていますTable_2を結合し、サブクエリを使用してTABLE_2の両方の年の合計売上値を合計し、TABLE_1 WHERE TABLE_1のカスタム番号がTABLE_2 Cust_noと一致するように値を更新します。
クエリを「EXPLAIN」で実行し、出力を送信します。これは、クエリのどの部分が高価であるかを示します。 –