テーブルがあれば
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
はこれを明示的に示しているため、少し低性能のオプティマイザーで済みます。
疑問がある場合はテストしてください。