我有一个很慢的问题:
SELECT
t1.aktualizace_ciselniku_ean,
t2.den,
t2.hodina,
sum(CASE
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 5'
AND aktualizace_ciselniku_teplotni_oblast = 'Region Jižní Čechy' THEN t2.tdd_tdd5jiznicechy * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 5'
AND aktualizace_ciselniku_teplotni_oblast = 'Region Jižní Morava' THEN t2.tdd_tdd5jiznimorava * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 5'
AND aktualizace_ciselniku_teplotni_oblast = 'Region Praha' THEN t2.tdd_tdd5praha * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 5'
AND aktualizace_ciselniku_teplotni_oblast = 'Region Severní Čechy' THEN t2.tdd_tdd5severnicechy * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 5'
AND aktualizace_ciselniku_teplotni_oblast = 'Region Severní Morava' THEN t2.tdd_tdd5severnimorava * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 5'
AND aktualizace_ciselniku_teplotni_oblast = 'Region Střední Čechy' THEN t2.tdd_tdd5strednicechy * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 5'
AND aktualizace_ciselniku_teplotni_oblast = 'Region Východní Čechy' THEN t2.tdd_tdd5vychodnicechy * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 5'
AND aktualizace_ciselniku_teplotni_oblast = 'Region Západní Čechy' THEN t2.tdd_tdd5zapadnicechy * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 1' THEN t2.tdd_tdd1cr * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 2' THEN t2.tdd_tdd2cr * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 3' THEN t2.tdd_tdd3cr * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 4' THEN t2.tdd_tdd4cr * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 6' THEN t2.tdd_tdd6cr * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 7' THEN t2.tdd_tdd7cr * t1.aktualizace_ciselniku_odhad_rocni_spotreby
WHEN t1.aktualizace_ciselniku_tdd = 'TDD č. 8' THEN t2.tdd_tdd8cr * t1.aktualizace_ciselniku_odhad_rocni_spotreby
ELSE 0
END) AS aktualizace_ciselniku_odhad_rocni_spotreby
FROM
aktualizace_ciselniku t1
JOIN
normalizovane_tdd t2
ON t2.den >= t1.aktualizace_ciselniku_datum_od
AND t2.den <= t1.aktualizace_ciselniku_datum_do
GROUP BY
t1.aktualizace_ciselniku_ean,
t2.den,
t2.hodina
ORDER BY
NULL;
这里是dbfiddle的链接。
在表aktualizace\u ciselniku中约有40000行,在normalizeovane\u tdd中约有8000行,但查询1小时后没有得到结果。
如何优化?在一个查询中创建索引还是执行两个sql命令?
数据库类型mariadb连接通过php mysqli\u连接。
暂无答案!
目前还没有任何答案,快来回答吧!