Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mySQL] Jak usunąć dużą liczbę rekordów?
Forum PHP.pl > Forum > Bazy danych > MySQL
yalus
witam

w bazie mam dwie tabele i teraz chcialbym z jednej usunac te same rekordy, ktore znajduja sie w drugiej

uzywam do tego takiego oto zapytania:

  1. DELETE FROM tblcustomers WHERE EXISTS (SELECT incorrect_numb.mobile_number FROM incorrect_numb WHERE tblcustomers.mobile_number = incorrect_numb.mobile_number);


niestety takie zapytanie wykonywane jest b. dlugo (podzapytanie itp) a do usuniecia mam ponad 60.000 rekordow
czy jest jakis sposob aby zrobic to szybciej?


pozdrawiam
zzeus
Podczas DELETE można korzystać z JOIN, więc spróbuj coś z RIGHT JOIN, coś na wzór:
  1. DELETE FROM tblcustomers RIGHT JOIN incorrect_numb USING(mobile_number)
gothye
ja bym to zrobił tak :

pobrał rekordy z pierwszej tabeli 

wykonał:

  1. $dousuniecia = implode(',',$rekordy);


a w kolejnym zapytaniu :

  1. DELETE FROM tabele WHERE tblcustomers.mobile_number IN (".dousuniecia.")


Mchl
Cytat(zzeus @ 12.02.2010, 14:44:06 ) *
Podczas DELETE można korzystać z JOIN, więc spróbuj coś z RIGHT JOIN, coś na wzór:
[SQL] pobierz, plaintext
  1. DELETE FROM tblcustomers RIGHT JOIN incorrect_numb USING(mobile_number)
[SQL] pobierz, plaintext


Prawie. Tylko tabele z których chcemy kasować wstawia się przed FROM
Kod
DELETE tblcustomers  FROM tblcustomers RIGHT JOIN incorrect_numb USING(mobile_number)
skowron-line
Możesz sobie również podzielić to na części żeby odrazu 60 000 nie usuwać
  1. $affected_rows = 1;
  2. while( $affected_rows > 0 )
  3. {
  4. mysql_query('delete from tabela limi 10000');
  5. $affected_rows = mysql_affected_rows();
  6. }
yalus
dzieki Wam za pomoc.
zaraz biore sie do roboty winksmiley.jpg


wlasnie usunalem ponad 180.000 rekordow

wszystkie zaproponowane przez Was zapytania sa poprawne ale najlepsze okazalo sie te ktore zaproponowal zzeus i Mchl
cala akcja usowania trwala zaledwie nieco ponad 10sec

natomiast zapytanie ktore ja wykozystalem usunelo mi zaledwie 3tys i to w dodatku w prawie godzine
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.