Усі відповіді, наведені вище, є правильними, для випадку DISTINCT в одному стовпчику проти GROUP BY в одному стовпчику. Кожен db-движок має власну реалізацію та оптимізацію, і якщо ви дбаєте про дуже малу різницю (в більшості випадків), то вам доведеться протестувати на конкретному сервері І конкретній версії! Оскільки реалізації можуть змінюватися ...
АЛЕ, якщо у запиті ви обрали більше одного стовпця, то DISTINCT істотно відрізняється! Тому що в цьому випадку він буде порівнювати ВСІ стовпці всіх рядків, а не лише один стовпець.
Тож якщо у вас є щось на кшталт:
// This will NOT return unique by [id], but unique by (id,name)
SELECT DISTINCT id, name FROM some_query_with_joins
// This will select unique by [id].
SELECT id, name FROM some_query_with_joins GROUP BY id
Поширеною помилкою є думка, що ключове слово DISTINCT розрізняє рядки за першим вказаним вами стовпцем, але DISTINCT є загальним ключовим словом у цьому способі.
Тож люди, яким ви повинні бути обережними, щоб не сприймати вищезазначені відповіді як правильні для всіх випадків ... Ви можете заплутатися та отримати неправильні результати, хоча все, що ви хотіли, - це оптимізація!