1. ホーム
  2. マイスル

[解決済み】MySQLでSELECT DISTINCTとGROUP BYのどちらが速いか?

2022-03-29 18:11:19

質問

テーブルがある場合

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

?

解決方法は?

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

どちらかが速ければ、その分 DISTINCT . これは、両者が同じであるにもかかわらず、クエリオプティマイザは、あなたの GROUP BY は、グループのメンバーではなく、そのキーだけを利用します。 DISTINCT はこれを明示するので、少し頭の悪いオプティマイザでも大丈夫です。

迷ったらテスト