Heim >Datenbank >MySQL-Tutorial >EXISTS-Unterabfragen: SELECT 1 oder SELECT * – Ist das für die Leistung wichtig?

EXISTS-Unterabfragen: SELECT 1 oder SELECT * – Ist das für die Leistung wichtig?

Barbara Streisand
Barbara StreisandOriginal
2025-01-15 20:38:13323Durchsuche

EXISTS Subqueries: SELECT 1 or SELECT * – Does it Matter for Performance?

*EXISTS-Unterabfrage: SELECT 1 vs. SELECT **

Bei der Verwendung der EXISTS-Unterabfrage in SQL lautet eine häufige Frage: Sollte SELECT 1 oder SELECT * in der Unterabfrage verwendet werden?

*SELECT vs. SELECT 1**

Früher dachte man, dass SELECT 1 effizienter sei als SELECT * in der EXISTS-Unterabfrage. Dies ist jedoch nicht der Fall. SQL Server optimiert die EXISTS-Prüfung, um unabhängig von den in der SELECT-Liste der Unterabfrage angegebenen Spalten KEINE DATEN an das System zurückzugeben.

Microsofts Perspektive

Laut Microsoft: „Die SELECT-Liste einer durch EXISTS eingeführten Unterabfrage enthält fast immer ein Sternchen (*). Es gibt keinen Grund, die Spaltennamen aufzulisten, da Sie nur testen, ob es Zeilen gibt, die die angegebenen Bedingungen erfüllen.“ in der Unterabfrage „

Demo

Um dies zu überprüfen, betrachten Sie die folgende Abfrage:

<code class="language-sql">SELECT whatever
FROM yourtable
WHERE EXISTS( SELECT 1/0
FROM someothertable 
WHERE a_valid_clause )</code>

Wenn SELECT * tatsächlich eine Operation für die ausgewählten Spalten ausführt, führt die Abfrage zu einem Fehler beim Teilen durch Null. Dies ist jedoch nicht der Fall, was darauf hinweist, dass die SELECT-Liste der Unterabfrage ignoriert und nur zur Bestimmung der Existenz der Zeile verwendet wird.

SQL-Standard

Der

SQL-Standard unterstützt auch diese Ansicht: „Wenn '' nur in einer enthalten ist, die direkt in einem enthalten ist, dann ist '' äquivalent zu einem A für jedes

Fazit

Zusammenfassend gibt es keinen Leistungsunterschied bei Verwendung von SELECT 1 oder SELECT * in der EXISTS-Unterabfrage. Daher wird empfohlen, welche Option besser lesbar ist oder mit Ihrem Codierungsstil übereinstimmt.

Das obige ist der detaillierte Inhalt vonEXISTS-Unterabfragen: SELECT 1 oder SELECT * – Ist das für die Leistung wichtig?. 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