MySQL 中 SELECT DISTINCT 與 GROUP BY 的效能比較
在 MySQL 中,擷取表格中的唯一值可以使用 SELECT DISTINCT
或 GROUP BY
查詢。然而,關於哪種方法性能更好,存在一些模糊之處。
考慮以下表格:
<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>
要檢索 "profession" 欄位的唯一值,可以使用兩種查詢:
查詢 1 (SELECT DISTINCT
):
<code class="language-sql">SELECT DISTINCT u.profession FROM users u</code>
查詢 2 (GROUP BY
):
<code class="language-sql">SELECT u.profession FROM users u GROUP BY u.profession</code>
哪個比較快?
雖然這兩個查詢在功能上看起來等效,但它們的效能可能會因查詢最佳化器而異。通常情況下,SELECT DISTINCT
稍微快一些。
這是因為 GROUP BY
預設會按所有可見列分組。在本例中,由於查詢中沒有使用其他列,因此優化器可能需要執行額外的工作來識別分組是否沒有意義。另一方面,SELECT DISTINCT
明確地請求唯一值。
結論
在大多數情況下,SELECT DISTINCT
和 GROUP BY
之間的效能差異可以忽略不計。但是,如果最佳化至關重要,建議使用 SELECT DISTINCT
,因為它簡化了查詢最佳化器的任務。
提示:為了獲得確定的結果,建議始終在效能監控環境中測試這兩種方法。
以上是SELECT DISTINCT 或 GROUP BY:對於唯一值,哪種 MySQL 查詢比較快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!