Witam serdecznie,
Mam bazę danych SQL składającą się z ok 1,5 mln rekordów, z których jakieś 40% to zdublowane wartości.
Chciałbym pousuwać te zdublowane rekordy tak, ażeby nie było więcej niż 1 takiego samego rekordu w bazie.
(czyli żeby nie buło dublujących się wpisów).

Wykombinowałem coś takiego:
  1. <?php
  2. $db = mysql_pconnect("localhost", "northwest", "password");
  3. mysql_select_db("baza") or die("Nastąpił problem z bazą danych!!!!");
  4. mysql_query("SET NAMES 'latin2'");
  5. $table = "tabelka_przeszukiwana";
  6. mysql_select_db($table, $db);
  7.  
  8. $query = "select * from $table ";
  9.  
  10. $res = mysql_query($query, $db)or die("błąd");
  11.  
  12. while($row = mysql_fetch_array($res)) {
  13.    $query2 = "select id from $table where email = '$row[1]'";
  14.    $res2 = mysql_query($query2, $db)or die("błąd w  query2");
  15.  
  16.    $num_record = mysql_numrows($res2);
  17.    if ($num_record > 1){
  18.        echo "DELETE FROM $table WHERE id= '$row[0]' <br/>";    
  19.                $usuwane = "DELETE FROM $table WHERE id= '$row[0]'";
  20.                $kasujemy = mysql_query($usuwane, $db)
  21.        $i++;
  22.    }
  23.    
  24. }
  25. ?>


ten skrypt usuwa wszystkie dublujące rekordy... Wiecie może jak to poprawić?
ps. ten skrypt jest też mega wolny... da się go jakoś zoptymalizować żeby
chodził szybciej?

Z góry dziękuje za pomoc.

Pozdrawiam,
Northwest