powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DISTINCT/group by
24 сообщений из 24, страница 1 из 1
DISTINCT/group by
    #39758484
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, что лучше использовать DISTINCT или group by чтобы убрать дубликаты? С каким вариантом время выполнения запроса будет наименьшие ?
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758486
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

А как ты узнаешь, что тебе ответили правильно?
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758487
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

в поиске забанили ?
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758489
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,

хотел бы найти в поиске, не писал бы тут!
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758490
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

т.е ты даже в поиске не умеешь писать ?
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758510
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
123йй,

я задал конкретный вопрос, а вы тут мусорку разводите, не хорошо так
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758513
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

а ты книжку прочитал ?
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758519
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

как выглядит запрос?

ps
аналитика по разному отаботает для group by и distinct

.....
stax
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758532
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpionя задал конкретный вопрос, а вы тут мусорку разводите, не хорошо так
К сожалению, этот конкретный вопрос относится к тем вопросам, на который невозможно дать простой, очевидный и правильный ответ.
Во-первых, потому что вопросов сразу два и очень разных.
Во-вторых, каждый из этих вопросов требует достаточно пространных пояснений по конкретным ситуациям.
Поэтому изложу лишь свои предпочтения:
1. По возможности развивать схему данных и писать запросы следует так, чтобы "дубликаты" просто не образовывались.
2. Если по каким-либо причинам выполнение п.1 невозможно/нежелательно, то предпочитаю использовать group by как более сопровождаемое и в меньшей степени склонное к сокрытию ошибок решение.
3. Если вижу в запросе, требующем внимания, "select distinct", то первое что пытаюсь сделать - выяснить, для какой такой надобности оно появилось и не надо ли раздать кому по шапке уже просто потому, что данный инструмент слишком часто применяется не от большого ума.
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758557
Фотография rf_mail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,
faq
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758560
veep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymouselimpionя задал конкретный вопрос, а вы тут мусорку разводите, не хорошо так
3. Если вижу в запросе, требующем внимания, "select distinct", то первое что пытаюсь сделать - выяснить, для какой такой надобности оно появилось и не надо ли раздать кому по шапке уже просто потому, что данный инструмент слишком часто применяется не от большого ума.
И то и другие документированно и обязано работать.
GROUP BY предполагает что будет делаться агрегация. А distinct нужен чисто для отброса дубликатов.

Вопрос что быстрее - без разницы наверное. Надо ориентироваться на требования со стороны заказчика по перфомансу приложения.

Если интересно - можно просто провести тесты и измерить. Если приложение не делает это 1000 раз за секунду (а раз в час ) - то наверное все равно.
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758567
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
veepА distinct нужен чисто для отброса дубликатов.Чудак, ты не понял. Не надо генерить дубли, чтобы потом с ними бороться.
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758578
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
veepЕсли интересно - можно просто провести тесты и измерить.Провести корректный тест задача, требующая определенных знаний. Результат distinct и group by идентичен только при определенных ограничениях.
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758582
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
-2-elimpion,

А как ты узнаешь, что тебе ответили правильно?
тут, скорее, проблема в том, что правильных неполных ответов может быть много
andrey_anonymousК сожалению, этот конкретный вопрос относится к тем вопросам, на который невозможно дать простой, очевидный и правильный ответ.да лааааадно, можно просто всем лень пересказывать как работает оптимизатор (куча всяких трансформаций: в semi-join, всякие distinct/group-by placement, distinct/group-by elimination, distinct push-down, distinct agg transformation, distinct view unnesting, hash unique, hash group by, sort unique, sort group by)....


andrey_anonymousпредпочитаю использовать group by как более сопровождаемое и в меньшей степени склонное к сокрытию ошибок решение.имхо зависит от уровня разработчиков: если слабо понимают логику, то действительно group by заставит немного задуматься о том, что именно хотят получить, но, в целом, это крайне странный аргумент делать group by там где нужен distinct.
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758587
mnbvcx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно для надежности писать и distinct и group by.
И чтоб точно не было повторов, из этого датасета сделать селект тоже с дистинктом.

Код: sql
1.
2.
3.
4.
5.
right JOIN (	SELECT DISTINCT  AssetsID, ClientID, OpeningBalance , ClosingBalance 
				FROM(
				SELECT DISTINCT  AssetsID, ClientID, SUM(OpeningBalance) as OpeningBalance, SUM(ClosingBalance) as ClosingBalance, SUM(Debit) as Debit, SUM(Credit) as Credit
					FROM (
							SELECT DISTINCT  AssetsID, ClientID --ниже есть group by, конечно же
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758588
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderandrey_anonymousневозможно дать простой, очевидный и правильный ответ.да лааааадно, можно просто всем лень пересказывать как работает оптимизатор (куча всяких трансформаций
:) xtenderandrey_anonymousпредпочитаю использовать group by как более сопровождаемое и в меньшей степени склонное к сокрытию ошибок решение.но, в целом, это крайне странный аргумент делать group by там где нужен distinct.
По мне так нормальный аргумент, если делаешь нечто, подлежащее сопровождению , а не "просто убираешь дубли".
А где, кстати, полагаешь, distinct реально нужным ?
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758601
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtendergroup by заставит немного задуматьсяЭто если долистают до него. А так в списке выборки поменяют trunc(...'dd') на 'mm'. Пользователь потом на реальных данных будет гадать, какую из показанных 30 одинаковых дат выбрать в качестве параметра отчета.
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758603
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymousxtenderпропущено...
да лааааадно, можно просто всем лень пересказывать как работает оптимизатор (куча всяких трансформаций
:) xtenderпропущено...
но, в целом, это крайне странный аргумент делать group by там где нужен distinct.
По мне так нормальный аргумент, если делаешь нечто, подлежащее сопровождению , а не "просто убираешь дубли".
А где, кстати, полагаешь, distinct реально нужным ?
Там, где это приводит к оптимальному плану =)
Т.е. если что-то работает на distinct, переписывание на group by может потребовать дополнительных затрат, как и в обратном случае.
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758650
veep
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicveepА distinct нужен чисто для отброса дубликатов.Чудак, ты не понял. Не надо генерить дубли, чтобы потом с ними бороться.

Дублей в таблицах нет при любом дизайне (что прямом, что кривом).Каждая строчка это уникальное событие (факт, значение), Distinct пользуются тогда когда надо сделать уникальным вывод некого представления.

Например таблица логов, посмотреть типы событий за последний час. Если мне не нужно что то агрегировать не вижу причины не использовать distinct.
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758695
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
veepДублей в таблицах нет при любом дизайне (что прямом, что кривом).Каждая строчка это уникальное событие (факт, значение)Корявый ум недоразработчиков может легко любой скаляр разможить -ннадцать на -ннадцать раз корявым соединением. Именно это подозревается при наличии немотивированного unique.
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758699
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все мы пользуемся дистинктами намного чаще, чем иногда кажется
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39758710
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxвсе мы пользуемся дистинктами намного чаще, чем иногда кажетсяТы уверен, что так уж и все так уж часто и именно так пользуются попселем?
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39759224
Фотография rf_mail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
DISTINCT/group by
    #39759239
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rf_mail ответ из-за океана Утверждая "they are for all intents and purposes the same ", Том не прав.
Group by при лингвистическом сравнении обрезает строки по nls_sort и можно получить некорректный результат, где distinct отработает верно. С лингвистикой distinct переходит с hash на sort и работает медленнее (в 8i hash gby/unique еще не было). Поведение зависит от версий, патчей и параметров БД.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DISTINCT/group by
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]