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

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

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

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

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

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

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

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

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

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

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

Если интересно - можно просто провести тесты и измерить. Если приложение не делает это 1000 раз за секунду (а раз в час ) - то наверное все равно.
...
Рейтинг: 0 / 0
11.01.2019, 17:40
    #39758567
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
veepА distinct нужен чисто для отброса дубликатов.Чудак, ты не понял. Не надо генерить дубли, чтобы потом с ними бороться.
...
Рейтинг: 0 / 0
11.01.2019, 18:03
    #39758578
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
veepЕсли интересно - можно просто провести тесты и измерить.Провести корректный тест задача, требующая определенных знаний. Результат distinct и group by идентичен только при определенных ограничениях.
...
Рейтинг: 0 / 0
11.01.2019, 18:26
    #39758582
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
-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
11.01.2019, 18:42
    #39758587
mnbvcx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
Можно для надежности писать и 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
11.01.2019, 18:42
    #39758588
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
xtenderandrey_anonymousневозможно дать простой, очевидный и правильный ответ.да лааааадно, можно просто всем лень пересказывать как работает оптимизатор (куча всяких трансформаций
:) xtenderandrey_anonymousпредпочитаю использовать group by как более сопровождаемое и в меньшей степени склонное к сокрытию ошибок решение.но, в целом, это крайне странный аргумент делать group by там где нужен distinct.
По мне так нормальный аргумент, если делаешь нечто, подлежащее сопровождению , а не "просто убираешь дубли".
А где, кстати, полагаешь, distinct реально нужным ?
...
Рейтинг: 0 / 0
11.01.2019, 19:55
    #39758601
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
xtendergroup by заставит немного задуматьсяЭто если долистают до него. А так в списке выборки поменяют trunc(...'dd') на 'mm'. Пользователь потом на реальных данных будет гадать, какую из показанных 30 одинаковых дат выбрать в качестве параметра отчета.
...
Рейтинг: 0 / 0
11.01.2019, 20:18
    #39758603
AlexFF__|
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
andrey_anonymousxtenderпропущено...
да лааааадно, можно просто всем лень пересказывать как работает оптимизатор (куча всяких трансформаций
:) xtenderпропущено...
но, в целом, это крайне странный аргумент делать group by там где нужен distinct.
По мне так нормальный аргумент, если делаешь нечто, подлежащее сопровождению , а не "просто убираешь дубли".
А где, кстати, полагаешь, distinct реально нужным ?
Там, где это приводит к оптимальному плану =)
Т.е. если что-то работает на distinct, переписывание на group by может потребовать дополнительных затрат, как и в обратном случае.
...
Рейтинг: 0 / 0
11.01.2019, 23:39
    #39758650
veep
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
ElicveepА distinct нужен чисто для отброса дубликатов.Чудак, ты не понял. Не надо генерить дубли, чтобы потом с ними бороться.

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

Например таблица логов, посмотреть типы событий за последний час. Если мне не нужно что то агрегировать не вижу причины не использовать distinct.
...
Рейтинг: 0 / 0
12.01.2019, 08:14
    #39758695
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
veepДублей в таблицах нет при любом дизайне (что прямом, что кривом).Каждая строчка это уникальное событие (факт, значение)Корявый ум недоразработчиков может легко любой скаляр разможить -ннадцать на -ннадцать раз корявым соединением. Именно это подозревается при наличии немотивированного unique.
...
Рейтинг: 0 / 0
12.01.2019, 09:32
    #39758699
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
все мы пользуемся дистинктами намного чаще, чем иногда кажется
...
Рейтинг: 0 / 0
12.01.2019, 11:07
    #39758710
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
andreymxвсе мы пользуемся дистинктами намного чаще, чем иногда кажетсяТы уверен, что так уж и все так уж часто и именно так пользуются попселем?
...
Рейтинг: 0 / 0
14.01.2019, 11:15
    #39759224
rf_mail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
...
Рейтинг: 0 / 0
14.01.2019, 11:59
    #39759239
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DISTINCT/group by
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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / DISTINCT/group by / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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