Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Usuwanie duplikatów z 1,6mln rekordów
1q2w3e4r
post
Post #1





Grupa: Zarejestrowani
Postów: 238
Pomógł: 0
Dołączył: 6.05.2011

Ostrzeżenie: (10%)
X----


Witam,
Muszę usunąć duplikaty z 1,6mln rekordów.. Zastanawiam się jak to zrobić najszybciej.
Duplikaty mają się usuwać wierszami, czyli duplikaty jeśli jeden wiersz nie może się równać innemu.

Macie jakieś propozycje jak to zrobić?

Proszę o szybka odpowiedź.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
cudny
post
Post #2





Grupa: Zarejestrowani
Postów: 387
Pomógł: 66
Dołączył: 31.03.2005
Skąd: Kielce

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


Cytat(toniq @ 15.03.2012, 08:00:12 ) *
wersja z php ma pewna zaletę ze możesz dowolnie filtrować te wyniki


  1. $query = mysql_query('SELECT * FROM tab ORDER BY wiersz DESC');//ważne zęby były posortowane wyniki
  2. $i=0;
  3. while ($row = mysql_fetch_array($query)) {
  4. if ($i > 0)//pomijamy 1 wiersz :)
  5. {
  6. if ($p == $row['wiersz'])//tu dowone sprawdzanie tego wiersza
  7. mysql_query('DELETE FROM tab WHERE id = '.$row['id']);
  8. }
  9. $p = $row['wiersz'];
  10. $i++;
  11. }


i jesli tylko jest index na tym co chcesz sprawdzac to wykonanie tego kodu to kilka sekund (IMG:style_emoticons/default/smile.gif)


Nie obraź się ale to co napisałeś to totalna bzdura i nieporozumienie (IMG:style_emoticons/default/biggrin.gif)

Co do samego rozwiązania problemu to są dwie opcje (tym bardziej, że z tego co piszesz to jednorazowe rozwiązanie, więc ja bym się zbytnio nad wydajnością nie zastanawiał - ma zadziałać, a sql bajecznie szybko radzi sobie z dużymi ilościami rekordów):

Albo robisz to co cojack i alegorn napisali (wszytko jedno co (IMG:style_emoticons/default/smile.gif) ) albo sprawdź czy parser mysql pozwoli na cos takiego:

  1. DELETE FROM db WHERE id NOT IN(SELECT id FROM db GROUP BY kolumna_ktora_sie_bedzie_powtarzac)

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: 17.10.2025 - 01:28