W dniu 6 czerwca 2012 21:11 użytkownik Szymon Kajewski lysysoft@o2.plnapisał:
Jeżeli planujesz odpalać to częściej, stwórz sobie tablicę tymczasową, do której wrzuć wynik zapytania, i jej użyj.
już mam, dzięki wielkie.
mysql> create temporary table temp (a INT); Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO temp SELECT a.customerid FROM cash a WHERE a.time <= unix_timestamp() GROUP BY a.customerid HAVING SUM(a.value) >= 0; Query OK, 876 rows affected (1.53 sec) Records: 876 Duplicates: 0 Warnings: 0
mysql> UPDATE documents SET closed = 1 WHERE customerid IN (SELECT a from temp) AND type IN (1, 3, 5) AND cdate <= unix_timestamp() AND closed = 0; Query OK, 0 rows affected (1.83 sec) Rows matched: 0 Changed: 0 Warnings: 0
jak widać w sumie <3s.
da się to w jednym zapytaniu zrobić?