ОсновыНачальный
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;Связанные термины
Анекдоты по теме
— Почему ORDER BY в подзапросе бессмысленен? — Потому что результат подзапроса — это множество, а множество не имеет порядка. — Но у меня работает! — Случайно. Порядок не гарантирован. ORDER BY имеет смысл только в финальном SELECT.
— Почему мой запрос не находит «Иванов»? — Покажи WHERE. — WHERE name = 'иванов' — Регистр. — О. — Используй ILIKE или LOWER().
pg_stat_statements — расширение PostgreSQL, которое хранит статистику всех запросов: — calls: сколько раз выполнялся — total_exec_time: суммарное время — rows: строк возвращено SELECT query, calls, total_exec_time / calls AS avg_ms FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10; Вот твои самые дорогие запросы.