Heim  >  Artikel  >  Datenbank  >  Welcher 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'?

Welcher 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'?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 12:01:02257Durchsuche

Which Approach is Best for Selecting Rows Present in One Table But Not Another:

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn