So langsam blicke ich durch mit dem JOIN, nur stosse ich jetzt an die Limits.
Ich brauche eine Abfrage, die doppelte Einträge über 4 Spalten findet.
Ohne JOIN also etwa so:
Das dauert bei 1000 Datensätzen knapp 60 Sek. und damit doppelt so lange wie die max. Script runtime meines Providers.
Schneller gehts mit JOIN, dazu hatte mir ein freundlicher Helfer hier schon mal die Syntax gegeben:
Damit bin ich klar gekommen, bis etwa 10K Datensätze, ab da braucht auch diese Abfrage mehr als 30 Sek.
Ich habe aber bis zu 100K Datensätze, sprich ich muss das entweder zigfach splitten, oder ich brauche eine schnellere Abfrage.
Hat jemand eine Idee?
Ich brauche eine Abfrage, die doppelte Einträge über 4 Spalten findet.
Ohne JOIN also etwa so:
Code:
$abfrage = mysql_query("SELECT * FROM `tabelle`");
while($row = mysql_fetch_object($abfrage))
{
$abfrage2 = mysql_query("SELECT * FROM `tabelle` WHERE `id` != ".$row->id." AND `feld1` = '".$row->feld1."' AND `feld2` = '".$row->feld2."' AND `feld3` = '".$row->feld3."' AND `feld4` = '".$row->feld4."'");
while($row2 = mysql_fetch_object($abfrage2))
{
print $row->id." = ".$row2->id."<br>";
}
}
Das dauert bei 1000 Datensätzen knapp 60 Sek. und damit doppelt so lange wie die max. Script runtime meines Providers.
Schneller gehts mit JOIN, dazu hatte mir ein freundlicher Helfer hier schon mal die Syntax gegeben:
Code:
SELECT n1.`id` source_row, n2.`id` same_as_row FROM `tabelle` n1 JOIN `tabelle` n2 ON n1.`feld1` = n2.`feld1` AND n1.`feld2` = n2.`feld2` AND n1.`feld3` = n2.`feld3` AND n1.`feld4` = n2.`feld4` AND n1.`id` != n2.`id`;
Damit bin ich klar gekommen, bis etwa 10K Datensätze, ab da braucht auch diese Abfrage mehr als 30 Sek.
Ich habe aber bis zu 100K Datensätze, sprich ich muss das entweder zigfach splitten, oder ich brauche eine schnellere Abfrage.
Hat jemand eine Idee?