Witam, proszę o pomoc w optymalizacji zapytania MySQL'owego. Aktualnie trwa zbyt długo... ~20 sek. Potrzebuję do wygenerowania listy klientów zadłużonych, którzy: 1) zostali podłączeni przed 2005 rokiem, 2) mają włączone komputery, 3) bez zawieszonych płatności :)
LMS v1.4.x
SELECT users.id AS id, CONCAT(UPPER(lastname), ' ', users.name) AS username, status, email, phone1, phone2, phone3, users.address, gguin, nip, pesel, zip, city, info, message, serviceaddr, COALESCE(SUM((type * -2 + 7) * value), 0.00)/(CASE COUNT(DISTINCT nodes.id) WHEN 0 THEN 1 ELSE COUNT(DISTINCT nodes.id) END) AS balance
FROM users
LEFT JOIN cash ON (users.id=cash.userid AND (type = 3 OR type = 4)) LEFT JOIN nodes ON (users.id=ownerid) LEFT JOIN assignments ON (users.id=assignments.userid) WHERE deleted = 0 AND users.creationdate < 1104534000 AND nodes.access = 1 AND NOT suspended GROUP BY users.id, lastname, users.name, status, email, phone1, phone2, phone3, users.address, gguin, nip, pesel, zip, city, info, message, serviceaddr ORDER BY balance asc