Chodzi mi głównie o zapytanie SELECT. Dla 6 000-10 000 rekordów działa spoko. Ale jak spróbuję przeedytować tabelkę 500000 rekordów to juz jest problem
Moja tabelka
id|email|status|flag
I w co drugim rekordzi potrzebuję mieć 1 a w co drugim 0 maksymalnie równo rozłożone rekordy. Sortuję po czasie dodania rekordu (czyli ID), Przykłodowo musze równo podzielić maile np z przed dwóch lat.
Skrypt jest częściej wykorzystywany. Obecnie nie poradziłem sobie z jego uruchomieniem. Robię to tak, że eksportuję w ekselu usuwam odpowiendie wiersze, a te pozostałe oznaczam flagą i importuje do innej tabelki.
SET @rowNumber = 0; UPDATE adresy SET flag=1 WHERE id IN (SELECT t.id FROM ( SELECT DISTINCT email, `status`, id, @rowNumber := @rowNumber+ 1 AS rn FROM adresy WHERE `status` IN (1, 3) GROUP BY email ORDER BY id ) t WHERE t.rn % 2 = 0 ORDER BY t.rn )
Jak to zoptymalizować jak uruchomić na tabeli pół miliona rekordów nawet konsola się wiesza.