Optimierung von „Mysql select where not in table“ für einen effizienten Datenabruf
Beim Umgang mit zwei Tabellen (A und B) mit identischer Primärtabelle Bei Verwendung von Tasten stellt sich häufig die Aufgabe, Zeilen auszuwählen, die in A vorhanden, aber in B nicht vorhanden sind. Der Standardansatz mit der „NOT EXISTS“-Klausel weist Leistungseinschränkungen auf.
Not Exists vs. Left Join
Die von Ihnen erwähnte „NOT EXISTS“-Abfrage prüft für das Fehlen übereinstimmender Zeilen in B für jede Zeile in A. Dieser als Anti-Join bezeichnete Prozess kann bei großen Datensätzen ineffizient sein. Im Gegensatz dazu sucht Ihr vorgeschlagener Left-Join-Ansatz nach Nullwerten in der Spalte „B.y“ für jede Zeile in A. Dies kann eine effektivere Lösung sein.
Verbesserter Abfrageausdruck
Es gibt jedoch eine kleine Verbesserung, die an Ihrer Left-Join-Abfrage vorgenommen werden kann:
SELECT A.* FROM A LEFT JOIN B ON A.x = B.y WHERE B.y IS NULL
Indem Sie explizit nur Spalten aus Tabelle A (A.*) auswählen, optimieren Sie die Abfrage, indem Sie nur das Notwendige abrufen Daten.
Fazit
Während die „NOT EXISTS“-Klausel eine praktikable Option für kleine Datensätze bleibt, bietet der Left-Join-Ansatz mit dem verbesserten Abfrageausdruck eine bessere Leistung für größere Datenmengen. Dadurch können Sie effizient Zeilen abrufen, die in Tabelle A, aber nicht in Tabelle B vorhanden sind.
Das obige ist der detaillierte Inhalt vonWelcher Ansatz eignet sich am besten zum Auswählen von Zeilen, die in einer Tabelle vorhanden sind, in einer anderen jedoch nicht: „NOT EXISTS' oder „LEFT JOIN'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!