Heim > Datenbank > MySQL-Tutorial > Wie kann ich mithilfe der IN-Klausel von MySQL mehrere Spalten effizient abfragen?

Wie kann ich mithilfe der IN-Klausel von MySQL mehrere Spalten effizient abfragen?

Mary-Kate Olsen
Freigeben: 2025-01-01 11:36:12
Original
909 Leute haben es durchsucht

How Can I Efficiently Query Multiple Columns Using MySQL's IN Clause?

Abfragen mehrerer Spalten in einer IN-Klausel mit MySQL

Bei der Arbeit mit strukturierten Daten ist das Abfragen mehrerer Spalten innerhalb einer IN-Klausel ein häufiger Vorgang . Für MySQL gibt es jedoch einen subtilen Unterschied zwischen der Verwendung der IN-Klausel mit einem einzelnen Tupel und mit einer Reihe von Tupeln.

Einzelne Tupelabfrage:

Das Original Die Frage beschreibt ein Szenario, in dem vier Spalten (x0, y0, x1, y1) geografische Koordinaten darstellen. Für eine einzelne Wertekombination wie (4, 3, 5, 6) können Sie die IN-Klausel wie folgt verwenden:

SELECT * FROM my_table WHERE (x0, y0, x1, y1) IN ((4, 3, 5, 6))
Nach dem Login kopieren

Mit einem zusammengesetzten Index für (x0, y0, x1, y1 ), findet diese Abfrage effizient die gewünschte Zeile.

Mehrfache Tupelabfrage:

Allerdings Die Frage beinhaltet auch die Abfrage einer Liste von Tupeln, wie zum Beispiel [(4, 3, 5, 6), (9, 3, 2, 1)]. In solchen Szenarien verarbeitet der MySQL-Optimierer die IN-Klausel möglicherweise nicht immer optimal.

Optimierungsverbesserung in neueren MySQL-Versionen:

In früheren MySQL-Versionen (vor 5.7) Der Optimierer würde die Mehrfachtupelabfrage in eine Reihe von OR-Klauseln zerlegen, wie im bereitgestellten Dokument beschrieben Antwort:

(  ( x0 = 4 AND y0 = 3 AND x1 = 5 AND y1 = 6 ) 
OR ( x0 = 9 AND y0 = 3 AND x1 = 2 AND y1 = 1 )
)
Nach dem Login kopieren

Dieser Ansatz könnte zu ineffizienten Ausführungsplänen führen, insbesondere bei großen Datensätzen.

In neueren Versionen von MySQL (5.7 und höher) wurde der Optimierer verbessert, um mehr zu generieren Effiziente Pläne für mehrere Tupel-IN-Abfragen. Für diese Versionen wird die Verwendung der folgenden Syntax empfohlen:

(x0, y0, x1, y1) IN ((4, 3, 5, 6), (9, 3, 2, 1))
Nach dem Login kopieren

Der Optimierer generiert automatisch einen optimierten Ausführungsplan, der den verfügbaren Index nutzt.

Fazit:

Bei der Abfrage mehrerer Spalten in einer IN-Klausel mit MySQL hängt die empfohlene Vorgehensweise von der MySQL-Version ab. Bei älteren Versionen empfiehlt es sich, die Abfrage in ODER-Klauseln zu zerlegen. Bei neueren Versionen kann der verbesserte Optimierer mehrere Tupel-IN-Abfragen effizient verarbeiten, ohne dass eine manuelle Umstrukturierung erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe der IN-Klausel von MySQL mehrere Spalten effizient abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage