Leistungsvergleich von SELECT DISTINCT und GROUP BY in MySQL
In MySQL können Sie die Abfrage SELECT DISTINCT
oder GROUP BY
verwenden, um eindeutige Werte in der Tabelle zu extrahieren. Es besteht jedoch eine gewisse Unklarheit darüber, welche Methode die bessere Leistung erbringt.
Betrachten Sie das folgende Formular:
<code class="language-sql">CREATE TABLE users ( id int(10) unsigned NOT NULL auto_increment, name varchar(255) NOT NULL, profession varchar(255) NOT NULL, employer varchar(255) NOT NULL, PRIMARY KEY (id) )</code>
Um eindeutige Werte für das Feld „Beruf“ abzurufen, können Sie zwei Abfragen verwenden:
Abfrage 1 (SELECT DISTINCT
):
<code class="language-sql">SELECT DISTINCT u.profession FROM users u</code>
Abfrage 2 (GROUP BY
):
<code class="language-sql">SELECT u.profession FROM users u GROUP BY u.profession</code>
Welches ist schneller?
Obwohl diese beiden Abfragen funktional gleichwertig erscheinen, kann ihre Leistung je nach Abfrageoptimierer variieren. Normalerweise ist SELECT DISTINCT
etwas schneller.
Das liegt daran, dass GROUP BY
standardmäßig nach allen sichtbaren Spalten gruppiert. Da in diesem Fall keine anderen Spalten in der Abfrage verwendet werden, muss der Optimierer möglicherweise zusätzliche Arbeit leisten, um festzustellen, ob die Gruppierung keinen Sinn ergibt. Andererseits fordert SELECT DISTINCT
explizit einen eindeutigen Wert an.
Fazit
In den meisten Fällen ist der Leistungsunterschied zwischen SELECT DISTINCT
und GROUP BY
vernachlässigbar. Wenn die Optimierung jedoch von entscheidender Bedeutung ist, wird die Verwendung von SELECT DISTINCT
empfohlen, da dies die Aufgabe des Abfrageoptimierers vereinfacht.
Tipp: Um aussagekräftige Ergebnisse zu erhalten, wird empfohlen, beide Methoden immer in einer Umgebung zur Leistungsüberwachung zu testen.
Das obige ist der detaillierte Inhalt vonSELECT DISTINCT oder GROUP BY: Welche MySQL-Abfrage ist für eindeutige Werte schneller?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!