ОсновыНачальный
DISTINCT
Убирает дубликаты из результата запроса.
Синтаксис
SELECT DISTINCT column1, column2 FROM table;
Объяснение
SELECT DISTINCT возвращает только уникальные строки. Для этого база сортирует или хэширует результат — на больших таблицах это дорого.
Если дубликаты возникают из-за JOIN или неправильной схемы — лучше исправить запрос, а не добавлять DISTINCT.
Пример
-- Уникальные страны пользователей SELECT DISTINCT country FROM users ORDER BY country; -- COUNT уникальных SELECT COUNT(DISTINCT user_id) AS unique_users FROM visits;
Связанные термины
Анекдоты по теме
ORM говорит SQL: — Милый, я скрываю твою сложность за красивыми объектами. SQL: — А я из-за тебя генерирую запросы с 50 JOIN, которые выполняются час.
— Когда денормализация оправдана? — Когда JOIN слишком дорог для критичных запросов. — Примеры? — Материализованные агрегаты: сохранить total_orders в таблице users. — Дублирование для аналитики: OLAP схемы специально денормализованы. — Риски? — Несогласованность. Нужны триггеры или приложение для синхронизации.
Разработчик: — У меня запрос на 8 таблиц через JOIN, подзапросы, оконные функции внутри WHERE и GROUP BY на хэш с миллиардом строк. Он идёт 3 дня. Как оптимизировать? DBA: — TRUNCATE TABLE карьера_разработчика. И иди в менеджеры.