Mam takie zadanie...
Jest tabela N w której jest parametr: DATA i LICZBA.
Codziennie do tej tabeli dodaje się kilkadziesiąt LICZB.
Za jakiś czas jest konieczność zliczania tego, mniej więcej w taki sposób:
Zlicz zera, zlicz liczby większe od zera.
Zrobiłem zapytanie tego typu:
SELECT n.data,
IFNULL((SELECT COUNT(*) FROM N as n1 WHERE n1.data = n.data AND n1.liczba > 0),0) as suma_full,
IFNULL((SELECT COUNT(*) FROM N as n2 WHERE n2.data = n.data AND n2.liczba = 0),0) as suma_zer
FROM n
GROUP BY n.data
ORDER BY n.data
LIMIT 30
Zapytanie z początku trwało krótko. Teraz wykonuje się bardzo długo. Zakres danych jest ten sam (30). Zmiana w czasie wykonania zapytania zapewne wynika z faktu, że liczy z całej tabeli, a nie tylko z ostatnich 30 dat. Dobrze myślę?
Nie wiem czy kombinować z datami, czy może po prostu jakoś lepiej zbudować to zapytanie. Jestem tylko ciekaw czy faktycznie tak ten LIMIT (nie) działa?