Witam, chciałbym się dowiedzieć w jaki sposób można zoptymalizować następujący typ zapytania:
SELECT
* pola które potrzenuje *,
SUM(
CASE
WHEN (warunek1) THEN (wartosc1 * wartosc2 )
WHEN (warunek2 OR warunek3) THEN (wartosc3 * wartosc4 )
itd
END) as suma1,
SUM(
CASE
WHEN (warunek1) THEN (wartosc5 * wartosc6 )
WHEN (warunek2 OR warunek3) THEN (wartosc7 * wartosc8 )
END) as suma2,
----------------------------obszar do zoptymalizowania , czyli sumy które były liczone wyżej są wykonywane jeszcze raz
SUM(
CASE
WHEN (warunek1) THEN (wartosc1 * wartosc2 )
WHEN (warunek2 OR warunek3) THEN (wartosc3 * wartosc4 )
itd
END) +
SUM(
CASE
WHEN (warunek1) THEN (wartosc5 * wartosc6 )
WHEN (warunek2 OR warunek3) THEN (wartosc7 * wartosc8 )
END) ,
SUM(
CASE
WHEN (warunek1) THEN (wartosc1 * wartosc2 )
WHEN (warunek2 OR warunek3) THEN (wartosc3 * wartosc4 )
itd
END) -
SUM(
CASE
WHEN (warunek1) THEN (wartosc5 * wartosc6 )
WHEN (warunek2 OR warunek3) THEN (wartosc7 * wartosc8 )
END) ,
.......................
----------------------------obszar do zoptymalizowania
FROM
...
WHERE
...
GROUP BY
...
ORDER BY
...
chodzi mi głównie o obszar zaznaczony do optymalizacji, czyli najlepiej aby wykonać operacje typu suma1 + suma2, suma1 - suma2
silnik bazy danych z jakiego korzystam to mysql