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