ホームページ >データベース >mysql チュートリアル >SELECT DISTINCT または GROUP BY: 一意の値に対してはどちらの MySQL クエリが高速ですか?
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 DISTINCT
と GROUP BY
のパフォーマンスの違いは無視できます。ただし、最適化が重要な場合は、クエリ オプティマイザーのタスクを簡素化するため、SELECT DISTINCT
を使用することをお勧めします。
ヒント: 最終的な結果を得るには、パフォーマンス監視環境で両方の方法を常にテストすることをお勧めします。
以上がSELECT DISTINCT または GROUP BY: 一意の値に対してはどちらの MySQL クエリが高速ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。