Heim >Datenbank >MySQL-Tutorial >Wie kann ich effizient mehrere Spalten aus Unterabfragen in MySQL auswählen?

Wie kann ich effizient mehrere Spalten aus Unterabfragen in MySQL auswählen?

DDD
DDDOriginal
2024-10-29 09:11:30569Durchsuche

 How Can I Efficiently Select Multiple Columns from Subqueries in MySQL?

Auswählen mehrerer Spalten aus Unterabfragen in MySQL

Sie haben ein Szenario, in dem Sie die ID und den Wert (Übersetzung) für jedes Attribut abrufen müssen in einer bestimmten Sprache. Für einige Attribute gibt es jedoch möglicherweise keine Übersetzungen in der angegebenen Sprache.

Leistungsüberlegungen für Unterabfragen

Ein Ansatz besteht darin, Unterabfragen für jede Spalte zu verwenden, wie in Ihrem Beispiel gezeigt :

select attribute, 
(select id from attributeTranslation where attribute=a.id and language=1),
(select translation from attributeTranslation where attribute=a.id and language=1), 
from attribute a;

Dieser Ansatz funktioniert zwar, wirft jedoch Bedenken hinsichtlich der Leistung auf, wenn die Unterabfragen nicht von MySQL optimiert werden können.

Verwendung virtueller Tabellen

Eine effizientere Lösung ist die Verwendung virtueller Tabellen. Durch das Einschließen einer Unterabfrage in Klammern können wir eine virtuelle Tabelle erstellen, die mit anderen Tabellen in Ihrer Abfrage verknüpft werden kann.

SELECT a.attr, b.id, b.trans, b.lang
FROM attribute a
JOIN (
 SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
 FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)

In diesem Beispiel enthält die virtuelle Tabelle b die gewünschten ID- und Übersetzungsspalten aus dem attributeTranslation-Tabelle, verbunden mit der Attributtabelle a. Dadurch entfällt die Notwendigkeit mehrerer Unterabfragen und die Leistung wird verbessert.

Fazit

Die Verwendung virtueller Tabellen ermöglicht Ihnen die effiziente Auswahl mehrerer Spalten aus Unterabfragen und bietet gleichzeitig die Flexibilität zum Erstellen komplexe Join-Operationen. Dieser Ansatz ist besonders vorteilhaft, wenn es um Leistungsaspekte geht.

Das obige ist der detaillierte Inhalt vonWie kann ich effizient mehrere Spalten aus Unterabfragen in MySQL auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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