Heim > Datenbank > MySQL-Tutorial > Optimierung der EXISTS-Klausel: SELECT 1 vs. SELECT * – Ist das wichtig?

Optimierung der EXISTS-Klausel: SELECT 1 vs. SELECT * – Ist das wichtig?

Barbara Streisand
Freigeben: 2025-01-15 20:48:43
Original
682 Leute haben es durchsucht

EXISTS Clause Optimization: SELECT 1 vs. SELECT * — Does it Matter?

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

In SQL wird die EXISTS-Klausel verwendet, um zu prüfen, ob in der Unterabfrage Zeilen vorhanden sind, die der angegebenen Bedingung entsprechen. Entwickler verwenden seit langem sowohl SELECT 1 als auch SELECT * in EXISTS-Abfragen, was die Frage aufwirft: Welcher Ansatz ist effizienter?

SQL Server-Optimierung

Laut Microsoft ist SQL Server intelligent genug, um die Verwendung von EXISTS unabhängig von der SELECT-Liste der Unterabfrage zu erkennen. Da keine Daten an das System zurückgegeben werden, sind die Klauseln SELECT * und SELECT 1 hinsichtlich der Leistung gleichwertig.

Laut Microsoft-Dokumentation:

"Die Auswahlliste 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 Bedingungen erfüllen in der Unterabfrage .*"

angegeben

Selbstverifizierung

Um dieses Verhalten zu bestätigen, können Sie die folgende Abfrage ausführen:

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

Wenn die SELECT-Liste teilnimmt, löst diese Abfrage einen Fehler durch Division durch Null aus. Da SQL Server jedoch den Kontext der EXISTS-Klausel versteht, führt es keine Berechnungen für die SELECT-Liste durch.

SQL-Standard

Der ANSI SQL 1992-Standard verdeutlicht dieses Verhalten weiter und besagt, dass im Kontext des EXISTS-Prädikats die Auswahlliste „*“ jedem Literalwert entspricht.

Fazit

In SQL Server hat die Auswahl von SELECT 1 und SELECT * in der EXISTS-Klausel keinen Einfluss auf die Leistung. Beide Methoden liefern die gleichen Ergebnisse, da der Optimierer ihren Zweck erkennt und keine Daten an das System zurückgibt.

Das obige ist der detaillierte Inhalt vonOptimierung der EXISTS-Klausel: SELECT 1 vs. SELECT * – Ist das wichtig?. 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