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ć??



--
Pozdrawiam
Marcin / nicraM