Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja wyniku
daniel1302
post
Post #1





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


Witam, mam zapytanie które oznacza mi co drugi wynik pewną flagą.
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
  1. 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.

  1. SET @rowNumber = 0;
  2.  
  3. UPDATE adresy SET flag=1 WHERE id IN (SELECT t.id
  4. FROM (
  5. SELECT DISTINCT email, `status`, id, @rowNumber := @rowNumber+ 1 AS rn
  6. FROM adresy
  7. WHERE `status` IN (1, 3)
  8. GROUP BY email ORDER BY id
  9. ) t
  10. WHERE t.rn % 2 = 0 ORDER BY t.rn )


Jak to zoptymalizować jak uruchomić na tabeli pół miliona rekordów nawet konsola się wiesza.

Ten post edytował daniel1302 26.01.2015, 18:25:13
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.09.2025 - 18:15