stympel
@stympel
подпивасник

Как работает DISTINCT ON?

Всем привет, я понимаю, как работает DISTINCT, но если честно, не могу до конца сообразить, что делает DISTINCT ON, хотя в интернетах и примеров вроде бы куча и объснений на англоязычных форумах, наконец в документации. Что делает и когда именно нужно использовать DISTINCT ON?
  • Вопрос задан
  • 9945 просмотров
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
Чем вам поможет ещё одно объяснение, если вы уже, как говорите, прочитали много других?

distinct отвечает на вопрос "покажи уникальные комбинации таковых полей"
distinct on расширяет стандартное поведение и отвечает на вопрос "покажи данные первой строки из каждой уникальной комбинации таковых полей". А для определения "первой строки" - делает обязательным использование order by.

Используется когда вам нужно найти, например, данные по первому заказу каждого из покупателей в магазине.

Note: postgresql на момент 13 версии не умеет loose index scan, потому distinct в лоб может быть в зависимости от распределения данных элегантен в написании, но не очень эффективен и объяснять более подходящий алгоритм придётся планировщику вручную.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы