Heim > Datenbank > MySQL-Tutorial > Where-Klausel in MySQL-Joins: ON vs. WHERE – Was ist effizienter?

Where-Klausel in MySQL-Joins: ON vs. WHERE – Was ist effizienter?

Patricia Arquette
Freigeben: 2024-12-09 15:54:12
Original
478 Leute haben es durchsucht

Where Clause in MySQL Joins:  ON vs. WHERE – Which is More Efficient?

MySQL-Join-Optimierung mit Where-Klausel

In MySQL kann das Verbinden zweier Tabellen mithilfe verschiedener Arten von Joins erfolgen. Wenn Sie eine Linksverknüpfung durchführen und eine Bedingung basierend auf einer Spalte aus einer oder beiden Tabellen anwenden möchten, kann sich die Platzierung der Bedingung auf die Effizienz und die Ergebnisse der Abfrage auswirken.

Stellen Sie sich das folgende Szenario vor:

  • Wir haben zwei Tabellen, Kategorien und user_category_subscriptions, und möchten alle Kategorien und die von einem bestimmten Benutzer abonnierten Kategorien abrufen.
  • Die Die Spalte „category_id“ ist ein Schlüssel in beiden Tabellen, und „user_id“ ist in der Tabelle „user_category_subscriptions“ vorhanden.

Die folgende Abfrage erzielt das gewünschte Ergebnis:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions
ON user_category_subscriptions.category_id = categories.category_id AND user_category_subscriptions.user_id = 1;
Nach dem Login kopieren

Allerdings unter Verwendung einer WHERE-Klausel anstelle einer AND-Klausel innerhalb des Joins kann zu einer verringerten Effizienz führen:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions
ON user_category_subscriptions.category_id = categories.category_id
WHERE user_category_subscriptions.user_id = 1;
Nach dem Login kopieren

In einem Outer-Join kann die Platzierung des Bedingung in der Join-Klausel oder WHERE-Klausel ändert ihr Verhalten drastisch. Wenn im Join angegeben, wird nur die Teilmenge der Zeilen verknüpft, die die Bedingung erfüllen, was zu einer effizienten Zeilenauswahl führt. Im Gegensatz dazu filtert die Verwendung einer WHERE-Klausel die bereits verbundenen Zeilen und verwirft alle, die die Bedingung nicht erfüllen.

Um alle Kategorien und die von einem bestimmten Benutzer abonnierten Kategorien effizient abzufragen, platzieren Sie die Bedingung in der Verknüpfung -Klausel wird empfohlen. Dieser Ansatz stellt sicher, dass nur relevante Zeilen verbunden werden, was schnellere und genauere Ergebnisse liefert.

Das obige ist der detaillierte Inhalt vonWhere-Klausel in MySQL-Joins: ON vs. WHERE – Was ist effizienter?. 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