MySQL では SELECT DISTINCT と GROUP BY のどちらが速いですか? 質問する

MySQL では SELECT DISTINCT と GROUP BY のどちらが速いですか? 質問する

テーブルがあれば

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)
)

フィールドのすべての一意の値を取得したいのですがprofession、より高速な方法 (または推奨される方法) は何でしょうか。

SELECT DISTINCT u.profession FROM users u

または

SELECT u.profession FROM users u GROUP BY u.profession

?

ベストアンサー1

これらは本質的に同等です (実際、一部のデータベースはDISTINCT内部的にこのように実装されています)。

どちらかが高速な場合、それは になりますDISTINCT。これは、2 つは同じであるにもかかわらず、クエリ オプティマイザーは、 がGROUP BYグループ メンバーを利用せず、そのキーのみを利用しているという事実を把握する必要があるためです。DISTINCTはこれを明示的に示しているため、少し低性能のオプティマイザーで済みます。

疑問がある場合はテストしてください。

おすすめ記事