Heim > Datenbank > MySQL-Tutorial > Was ist besser: Mehrere JOIN-Klauseln oder eine OR-Bedingung in der ON-Klausel für doppelte Tabellensuchen?

Was ist besser: Mehrere JOIN-Klauseln oder eine OR-Bedingung in der ON-Klausel für doppelte Tabellensuchen?

Patricia Arquette
Freigeben: 2025-01-07 07:24:41
Original
593 Leute haben es durchsucht

Which is Better: Multiple JOIN Clauses or an OR Condition in the ON Clause for Duplicate Table Lookups?

Tabellenverknüpfungen für doppelte Suchvorgänge optimieren

Beim zweimaligen Verknüpfen derselben Tabelle gibt es im Allgemeinen zwei Ansätze: die Verwendung mehrerer JOIN-Klauseln oder die Einbindung einer ODER-Bedingung in der ON-Klausel.

Mehrere JOIN-Klauseln (Methode 1):

Wie in Ihrem Beispiel gezeigt, umfasst diese Methode das Erstellen eines separaten JOIN für jede übereinstimmende Bedingung:

SELECT t1.PhoneNumber1, t1.PhoneNumber2, 
   t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2
FROM Table1 t1
INNER JOIN Table2 t2
   ON t2.PhoneNumber = t1.PhoneNumber1
INNER JOIN Table2 t3
   ON t3.PhoneNumber = t1.PhoneNumber2
Nach dem Login kopieren

Dieser Ansatz ist unkompliziert und stellt sicher, dass die resultierenden Daten Folgendes enthalten alle erforderlichen Spalten.

OR-Bedingung in ON-Klausel (Methode 2):

Diese Methode versucht, die Abfrage zu vereinfachen, indem die JOIN-Bedingungen zu einer zusammengefasst werden:

SELECT ...
FROM Table1
INNER JOIN Table2 
   ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
      Table1.PhoneNumber2 = Table2.PhoneNumber
Nach dem Login kopieren

Dieser Ansatz kann jedoch zu doppelten Zeilen im Ergebnissatz führen, wenn beide übereinstimmenden Bedingungen für eine bestimmte Zeile erfüllt sind.

Best Practice:

Die bevorzugte Methode ist Methode 1 mit mehreren JOINs Klauseln. Es bietet eine explizitere und zuverlässigere Möglichkeit, die Tabelle basierend auf bestimmten Kriterien zu verknüpfen und gleichzeitig Datenduplizierung zu vermeiden.

Redundante Verknüpfungen vermeiden:

Es ist wichtig, redundante Verknüpfungen zu vermeiden Verwendung geeigneter Aliase und Namenskonventionen. Beispielsweise kann die folgende Abfrage vereinfacht werden:

SELECT t.PhoneNumber1, t.PhoneNumber2, 
   t1.SomeOtherFieldForPhone1, t1.someOtherFieldForPhone1
FROM Table1 t
JOIN Table2 t1 ON t1.PhoneNumber = t.PhoneNumber1
JOIN Table2 t2 ON t2.PhoneNumber = t.PhoneNumber2
Nach dem Login kopieren

Durch Aliasing der verbundenen Tabellen (z. B. t1 und t2) können Sie Redundanz reduzieren und die Abfrage besser lesbar machen.

Das obige ist der detaillierte Inhalt vonWas ist besser: Mehrere JOIN-Klauseln oder eine OR-Bedingung in der ON-Klausel für doppelte Tabellensuchen?. 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