|
|
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, подскажите можно ли использовать DISTINCT при объедение таблиц в inner join? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 17:28 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Можно. Но постановка вопроса намекает о быдло-коддинге. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 17:36 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
petrovichvanyaЗдравствуйте, подскажите можно ли использовать DISTINCT при объедение таблиц в inner join? Технически - возможно. По зрелому размышлению - как правило, не нужно. Практически - ленивые кодеры интенсивно используют, за что время от времени справедливо выхватывают неприятностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2018, 18:34 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
я, когда вижу дистинкт, всегда требую объяснения нафига после чего в 90% от него отказываются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2018, 11:24 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
petrovichvanya, Тебе все ясно? Чтобы никто не придирался, перепиши distinct через group by. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2018, 14:40 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
andreymx, Скажите, а в чем принципиальное "зло" distinct в тех случаях, когда можно заменить его group by? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 07:49 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Den Limonovв тех случаях, когда можно заменить его group by?Есть случаи, когда результата distinct нельзя получить с помощью group by? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 08:05 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
заменять дистинкт групп баем? Для чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 08:14 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
andreymxя, когда вижу дистинкт, всегда требую объяснения нафига после чего в 90% от него отказываются andreymxзаменять дистинкт групп баем? Для чего? "я, когда вижу дистинкт, всегда требую объяснения нафига" - тогда о чем вы? Если мне нужно вывести уникальные значения, то что лучше - distinct или group by? Результат на выводе как бы одинковый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 08:40 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Полагаю, что лучше делать условие выборки из таблиц таким, чтобы не было нужды в distinct. А то получается что ты выбираешь не нужные тебе данные и соединяешь их со вторым набором строк, а потом дистинктом их отсекаешь. Всё это приводит к бессмысленному расходу вычислительных мощностей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 09:07 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
БельфяПолагаю, что лучше делать условие выборки из таблиц таким, чтобы не было нужды в distinct. А то получается что ты выбираешь не нужные тебе данные и соединяешь их со вторым набором строк, а потом дистинктом их отсекаешь. Всё это приводит к бессмысленному расходу вычислительных мощностей.Это приводит к тому, что вроде бы работающий запрос через месяц становится нерабочим Из-за того, то условия уникальности через тот месяц поменялись, и строчек стало больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 11:09 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Бельфя, Из таблицы, хранящей факты продажи необходимо сформировать список проданных товаров за последние три дня. Как-то можно здесь обойтись без distinct/group by? Есть ли разница, что использовать - distinct имя_товара или select имя_товара..group by имя_товара? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 11:12 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Den LimonovБельфя, Из таблицы, хранящей факты продажи необходимо сформировать список проданных товаров за последние три дня. Как-то можно здесь обойтись без distinct/group by? Есть ли разница, что использовать - distinct имя_товара или select имя_товара..group by имя_товара?если есть таблица-справочник товаров, то, как вариант, селект из таблицы справочник где существует (и тут ваше условие о продажах за три дня) (where exists(select null from <факты продажи> where ... )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 11:30 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Den LimonovИз таблицы, хранящей факты продажи необходимо сформировать список проданных товаров за последние три дня. Как-то можно здесь обойтись без distinct/group by? Есть ли разница, что использовать - distinct имя_товара или select имя_товара..group by имя_товара? 1. При наличии справочника - можно. 2. Разница есть. distinct - это SORT. group by - может быть как sort group by, так и hash group by. В варианте hash - может пользоваться преимуществами параллельного исполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 12:37 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, HASH (UNIQUE) ? Regards Maxim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 12:56 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Den LimonovСкажите, а в чем принципиальное "зло" distinct в тех случаях, когда можно заменить его group by?Исторически сложилось, что пишушие group by осознают необходимость группировки и, как правило, считают некоторые агрегаты. А писатели distinct пихают чтобы избавиться от дубликатов, которые часто возникают от неправильного условия соединения или отсутствия необходимых фильтров. -2-Den Limonovв тех случаях, когда можно заменить его group by?Есть случаи, когда результата distinct нельзя получить с помощью group by?Есть ряд случаев когда результат distinct нельзя получить с помощью group by без дополнительной inline view . Необходимость создания inline view может тоже навести на некоторые мысли любителей пихать distinct. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 13:23 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
[quot dbms_photoshop]Den LimonovИсторически сложилось... Это правда. Тут не поспоришь. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 13:46 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopА писатели distinct пихают чтобы избавиться от дубликатов, которые часто возникают от неправильного условия соединения или отсутствия необходимых фильтров. Причины разные бывают. Например я иногда делаю так: Код: plsql 1. 2. 3. 4. Например есть услуги разных типов с совпадающими логинами и нужно отобрать эти логины развернуть по горизонтали. Что-то вроде самодельного pivot. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 15:01 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Alibek B.Что-то вроде собственно, два замечания: 1. distinct тут ничем не лучше group by. А group by может (посредством having) помочь сразу отобрать именно те сервисы, котоыре требуются 2. Многократные заходы join-ом в attr ради pivot могут, конечно, иметь смысл, но он слегка ускользает, поскольку вполне возможно собрать нужные attr одним заходом и пивотить на case-group by. Более того, если известно, что из attr требуется собрать хотя бы процентов 30 записей - то может быть выгоднее отдельно сгруппировать атрибуты и отфильтровать по exists в источнике "from ..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 15:18 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousно он слегка ускользает, поскольку вполне возможно собрать нужные attr одним заходом и пивотить на case-group by Если собирать с фильтрацией по type_id, то будут пропущены логины, для которых нет услуг соответствующего типа (а в моем варианте по этим логинам будет null). Если же фильтрацию по type_id не применять, то будут дубли, от которых нужно будет как-то избавляться. В этом случае использование distinct для получения полного списка услуг более красиво и понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 15:24 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Alibek B.В этом случае использование distinct для получения полного списка услуг более красиво и понятно.Обвешивание distinct-запроса eavом никоим образом не демонстрирует ни красивость, ни понятность приведенного в качестве примера многоточия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 15:31 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Alibek B., distinct в inline view выглядит намного более осмысленно чем на самом верхнем уровне. То есть Код: plaintext 1. Код: plaintext 1. В результате query transformations Oracle сам решит на каком этапе ему эффективней применять distinct. Ну и все это не меняет того факта, что с атрибутами лучше обойтись единственным соединением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 15:47 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Alibek B.Если собирать с фильтрацией по type_id, то будут пропущены логины, для которых нет услуг соответствующего типа (а в моем варианте по этим логинам будет null). Вот Вам с ходу пара вариантов с обратным заходом из атрибутов. Применять в зависимости от конкретных показаний (селективности предикатов, наличия индексов, потребности в первых строках или в общей статистике, располагаемой памяти pga и т.п.) Серебряной пули нет. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 16:11 |
|
||
|
DISTINCT
|
|||
|---|---|---|---|
|
#18+
Выглядит довольно монстрообразно. Неужели внешний джойн настолько "тяжел", что агрегатная функция в подобной конструкции (case внутри max) все равно эффективнее? Я поверю на слово, но все равно странно, что для реляционной базы данных, суть которой в связях, лишний джойн это настолько "дорогая" операция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2018, 18:56 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39680929&tid=1883671]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 375ms |

| 0 / 0 |
