Witam mam zapytanie wzięte z daemona z modułu payments. UPDATE documents SET closed = 1 WHERE customerid IN (SELECT a.customerid FROM cash a WHERE a.time <= unix_timestamp() GROUP BY a.customerid HAVING SUM(a.value) >= 0) AND type IN (1, 3, 5) AND cdate <= unix_timestamp() AND closed = 0
ale to wykonuje się straaaasznie długo. na virtualce rzeźbi mi już 20minut i bez efektu :( da się to jakoś przyśpieszyć, z optymalizować?
mysql> select count(*) FROM cash; +----------+ | count(*) | +----------+ | 157215 | +----------+ 1 row in set (0.18 sec)
mysql> select count(*) FROM documents; +----------+ | count(*) | +----------+ | 111221 | +----------+ 1 row in set (0.09 sec)
podzapytanie: SELECT a.customerid FROM cash a WHERE a.time <= unix_timestamp() GROUP BY a.customerid HAVING SUM(a.value) >= 0 wykonuje się dosyć szybko i zwraca 876 rows in set (5.99 sec). wydaje mi się, że mając te podzapytanie update powinien się wykonać nie co szybciej.
da się z tym coś zrobić??