2
を終了決して私は3つの列からなる大規模なMySQLのテーブルをインデックスとして以下のMySQLの集計列の異なる条件クエリが
DATETIME | UNITID | VALUE
----------------------------------
2017-01-01 00:00 | A | 50
2017-01-01 00:00 | B | 54
2017-01-01 00:00 | C | 12
2017-01-01 00:05 | A | 9
2017-01-01 00:05 | B | 8
2017-01-01 00:05 | C | 55
2017-01-01 00:10 | A | 12
DATETIME
で
とUNITID
のように構造化されています。
テーブルの合計の長さがあって3300万行〜であるデータの4年〜300のユニットID
私は何を探していますがUNITID
などのグループによって、この集合体であり、
DATETIME | VALUE(AB) | VALUE(C)
----------------------------------------
2017-01-01 00:00 | 104 | 12
2017-01-01 00:05 | 17 | 55
2017-01-01 00:10 | 12 | Null
私は
SELECT DISTINCT
T1.DATETIME AS DATETIME,
(SELECT
SUM(VALUE)
FROM
tbl_name AS T2
WHERE
T2.DATETIME= T1.DATETIME
AND T2.UNITID IN ('A', 'B')) AS VALUE(AB),
(SELECT
SUM(VALUE)
FROM
tbl_name AS T3
WHERE
T3.DATETIME= T1.DATETIME
AND T3.UNITID IN ('C')) AS VALUE(C)
FROM
tbl_name AS T1
WHERE
DATETIME >= '2017-01-01'
AND DATETIME <= '2017-01-02 23:55'
私は実際にUNITIDの私は、クエリに渡すと、私はLIMIT
が含まれている場合、それが正常に動作することの周りに10基を有していても、以下のようにこれを行うには、クエリを作成することができましたクエリの例100000行に制限すると、フェッチするのに12秒かかりますが、決して終わらない限界を取り除きます。私のSQLスキルはあまり良くありません。私はこれを引き起こしていることを解決できません。このクエリの場合、〜105000個の異なる行があることに注意してください。