Lars: MySQL mit 6,2 Mio. Datensätzen

Beitrag lesen

Ja, 1.)Indizes und 2.)mengenbasierte Logik.

Mengenbasierte Logik besteht hier im Bilden der so genannten Differenzmenge, die per Vergleich der Gesamtmenge und der per "SELECT DISTINCT" gebildeten Untermenge zu erreichen ist. Die Differenzmenge besteht aus den Dubletten.

Habe etwas Vergleichbares versucht, hat aber zu einer Speicherüberlastung geführt hatte:

<?php
$i=0;
echo "lese Daten: ";
$daten = mysql_db_query("mami2000","select id, Firmenname from adressen_2 group by Firmenname") or die(mysql_error());

echo "Daten eingelesen ";

while($entry = mysql_fetch_array($daten)) {
    $datenString .= '"'.$entry['id'].'", ';
}

$datenString = substr($datenString, 0,-2);

echo "Totalcount einzelne Firmennamen: ".mysql_num_rows($daten)."\n\n";

$sql = "Delete from adressen_2 where id NOT IN ('.$datenString.');";

mysql_db_query('mami2000', $sql);

echo "Fertig";
?>