首頁 >資料庫 >mysql教程 >SELECT DISTINCT 或 GROUP BY:對於唯一值,哪種 MySQL 查詢比較快?

SELECT DISTINCT 或 GROUP BY:對於唯一值,哪種 MySQL 查詢比較快?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-15 06:28:43526瀏覽

SELECT DISTINCT or GROUP BY: Which MySQL Query is Faster for Unique Values?

MySQL 中 SELECT DISTINCT 與 GROUP BY 的效能比較

在 MySQL 中,擷取表格中的唯一值可以使用 SELECT DISTINCTGROUP 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 DISTINCTGROUP BY 之間的效能差異可以忽略不計。但是,如果最佳化至關重要,建議使用 SELECT DISTINCT,因為它簡化了查詢最佳化器的任務。

提示:為了獲得確定的結果,建議始終在效能監控環境中測試這兩種方法。

以上是SELECT DISTINCT 或 GROUP BY:對於唯一值,哪種 MySQL 查詢比較快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn