ホームページ >データベース >mysql チュートリアル >SELECT DISTINCT または GROUP BY: 一意の値に対してはどちらの MySQL クエリが高速ですか?

SELECT DISTINCT または GROUP BY: 一意の値に対してはどちらの MySQL クエリが高速ですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-15 06:28:43454ブラウズ

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

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>

「職業」フィールドの一意の値を取得するには、2 つのクエリを使用できます:

クエリ 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>

どれが速いですか?

これら 2 つのクエリは機能的には同等に見えますが、パフォーマンスはクエリ オプティマイザーによって異なる場合があります。通常、SELECT DISTINCT の方がわずかに高速です。

これは、GROUP BY がデフォルトで表示されているすべての列でグループ化されるためです。この場合、クエリで他の列が使用されていないため、オプティマイザはグループ化が意味をなさないかどうかを識別するために追加の作業を実行する必要がある場合があります。一方、SELECT DISTINCT は明示的に一意の値を要求します。

結論

ほとんどの場合、SELECT DISTINCTGROUP BY のパフォーマンスの違いは無視できます。ただし、最適化が重要な場合は、クエリ オプティマイザーのタスクを簡素化するため、SELECT DISTINCT を使用することをお勧めします。

ヒント: 最終的な結果を得るには、パフォーマンス監視環境で両方の方法を常にテストすることをお勧めします。

以上がSELECT DISTINCT または GROUP BY: 一意の値に対してはどちらの MySQL クエリが高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。