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
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
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
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!