Heim > Datenbank > MySQL-Tutorial > Wie kann man UNION und LIMIT in MySQL effizient kombinieren, um Daten aus mehreren Tabellen abzurufen?

Wie kann man UNION und LIMIT in MySQL effizient kombinieren, um Daten aus mehreren Tabellen abzurufen?

Susan Sarandon
Freigeben: 2025-01-14 13:06:43
Original
393 Leute haben es durchsucht

How to Efficiently Combine UNION and LIMIT in MySQL to Retrieve Data from Multiple Tables?

MySQL-Abfragen optimieren: UNION und LIMIT für den Datenabruf aus mehreren Tabellen kombinieren

Das Abrufen von Daten aus mehreren Tabellen erfordert häufig das Kombinieren von Ergebnissen mit UNION und das Begrenzen der Anzahl der Zeilen mit LIMIT. Dieser Leitfaden zeigt einen effizienten Ansatz, um dies zu erreichen.

Stellen Sie sich ein Szenario vor, in dem Sie insgesamt 20 Stellenangebote von zwei bestimmten Unternehmen extrahieren müssen, mit maximal 10 Stellen pro Unternehmen. Die folgende optimierte Abfrage erreicht dies:

<code class="language-sql">(
  SELECT c.name, j.title, j.`desc`, j.link 
  FROM jobs_job j
  INNER JOIN companies_company c ON j.company_id = c.id
  WHERE c.name = 'Company1'
  ORDER BY name, title
  LIMIT 0, 10
) UNION ALL
(
  SELECT c.name, j.title, j.`desc`, j.link 
  FROM jobs_job j
  INNER JOIN companies_company c ON j.company_id = c.id
  WHERE c.name = 'Company2'
  ORDER BY name, title
  LIMIT 0, 10
)</code>
Nach dem Login kopieren

Der Schlüssel zur Effizienz liegt darin, LIMIT innerhalb jeder einzelnen SELECT-Aussage zu platzieren. Dadurch wird sichergestellt, dass die Ergebnisse jedes Unternehmens unabhängig voneinander auf 10 Zeilen begrenzt werden. Der UNION ALL-Operator (hier aus Geschwindigkeitsgründen verwendet; UNION würde Duplikate entfernen) kombiniert dann diese begrenzten Ergebnismengen und garantiert so ein Maximum von 20 Zeilen in der endgültigen Ausgabe.

Die ORDER BY-Klausel in jeder Unterabfrage verwaltet sortierte Ergebnisse nach Firmenname und Berufsbezeichnung vor der Gewerkschaftsoperation. Dadurch wird sichergestellt, dass der endgültige kombinierte Ergebnissatz sortiert bleibt. Diese Methode ist weitaus effizienter als die Anwendung von LIMIT nach dem UNION-Vorgang, der die Verarbeitung aller Ergebnisse vor der Anwendung des Grenzwerts erfordern würde.

Das obige ist der detaillierte Inhalt vonWie kann man UNION und LIMIT in MySQL effizient kombinieren, um Daten aus mehreren Tabellen abzurufen?. 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