|
|
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbpatch, ты жалок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:01 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbpatchtable(sys.odcinumberlist(2,3,5,6,8,9)) это не решение задачи в общем случае, это вообще не решение.Правильно, это не решение. Это тестовые данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:02 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbpatch, table(sys.odcinumberlist(2,3,5,6,8,9)) - это набор тестовых данных за который ты почему то зацепился и предложил не разобравшись использовать connect by... я понимаю что ты вместо головы используешь пятую точку, но иногда думать бывает невредно. ты даже не понял что моё решение можно переписать в общем виде как Код: plsql 1. 2. 3. 4. 5. попробуй хотя бы теперь не выдавать кирпичи для строительства своего бреда... подумай пять секунд перед ответом) ты и так был никто, так хотя бы не стремись к абсолютному нулю) offtop dbms_photoshop, мне кажется это твинк которого я прошлый раз так сильно обидел что он пошел на меня плакаться в онс и так ничего и не добился))) а если не твинк надо его довести чтобы и этот пошел жаловаться)) я ж даже модерам написать не могу))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:09 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
Хорошо бросаетесь кирпичами. С точки зрения одних - для того, чтобы abortКак найти отстутсвующий элемент '00003' достаточно указать диапазон в который это '00003' попадает другие отстаивают способы указания именно всех элементов диапазона ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:13 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
Хорошо еще никто не додумался отстаивать точку зрения на предмет указания первого попавшегося такого числа с остановом, чтоб не лопатить все данные. Тут бы уж точно все перестали понимать друг друга :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:15 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, вот только не начинай... детская задачка про то как разложить диапазон на все значения в него входящие это еще проще)) и вот там кстати и понадобиться connect by... ну или xml table.. ну или... еще много решений)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:17 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopdbpatchпропущено... Собеседование? О господи. Кого вы там собеседуете? И чем вам SELECT LEVEL FROM DUAL CONNECT BY LEVEL < n ... не угодил? Какие еще odcinumberlist ? Код: plsql 1. 2. 3. 4. 5. 6. или даже быстрее раза в два: Код: plsql 1. 2. 3. Итак, в первом примере два полных сканирования, ANTI JOIN, и connect by. Во втором два полных сканирования, connect by и сортировка, требуемая для минус. В примере Винта одно сканирование и сортировка, требуемая для аналитики (если дырки ищутся в PK например, то сортировка вообще не потребуется, т.к. данные могут быть уже вычитаны упорядочено). Ты утверждаешь что твое решение имеет какие-то преимущества? Свой connect by ты можешь чуть улучшить генерируя от min до max а не от 1 до max, но все равно его сюда приплетать и генерировать весь диапазон тот еще идиотизм. честно говоря, не пойму, что ты сравниваешь. первый случай ориентирован на выдачу первого результата - второй - на выдачу всех. поизучай лучше честный план на примере (под SYS), ибо какой смысл рассматривать все наслоения великолепия в ALL_OBJECTS, они не относятся к сути задачи. Код: plsql 1. 2. 3. 4. 5. 6. там и близко нет никаких полных сканирований что вы все агрессивные то такие сегодня? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:18 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
Vintвот только не начинай... детская задачка про то как разложить диапазон на все значения А если они не нужны, а надо просто в дырку всунуть. Причем желательно обойтись индексным покрытием? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:19 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, ну имхо перпендикулярная задача, но учитывая что в дырку сувать приходиться не раз и не два.... и каждый раз лопатить для этого, даже по индексному доступу, таблицу как то накладно, я бы таки посчитал все дырки и выписал на отдельный листик... ведь там еще за уши можно притянуть множество одновременно работающих пользователей, а тут уже каждому не посчитаешь отдельно) тут лочить придёться) да и вообще раз 10 уже обсуждали)) чего мусолить одно и тоже)) все есть в поиске) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:28 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
Vintчего мусолить одно и тоже)) все есть в поиске) Вот и я недоумеваю, чего все так впряглись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:29 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, да это ж личное)) сразу видно человек очень неравнодушен к вчерашним студентам типа меня)) да и скучно... давно не бодались, интересных тем нет.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:33 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
так пойдет? select min(column_value) min_cv ,max(column_value) max_cv ,column_value-rn grp from ( select t.* ,row_number()over(order by column_value) rn from table(sys.odcinumberlist(2,3,4,5,6,8,9)) t ) group by column_value-rn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:37 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
Vintdbpatch, table(sys.odcinumberlist(2,3,5,6,8,9)) - это набор тестовых данных за который ты почему то зацепился и предложил не разобравшись использовать connect by... я понимаю что ты вместо головы используешь пятую точку, но иногда думать бывает невредно. ты даже не понял что моё решение можно переписать в общем виде как Код: plsql 1. 2. 3. 4. 5. попробуй хотя бы теперь не выдавать кирпичи для строительства своего бреда... подумай пять секунд перед ответом) ты и так был никто, так хотя бы не стремись к абсолютному нулю) и? в чем суть твоих откровений? читая мой код - можно сразу сказать, что он делает. читая твой код - я буду минимум секунд тридцать пытаться разбирать закорючки с этими +1 и -1, почитаю лишний раз доку про subquery factoring, и все равно у меня останется привкус рассмотренного говнокода и убеждение в необходимости его как минимум потестировать - т.е. на выходе будем иметь лишь оценочное суждение вида: "слишком сложно, переписать". кроме того, никаких преимуществ перед connect by лично я не вижу, особенно в задаче - "мне нужно получить первый свободный номер из дырок" может ты их огласишь в явном виде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:41 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
Сергей АрсеньевХорошо еще никто не додумался отстаивать точку зрения на предмет указания первого попавшегося такого числа с остановом, чтоб не лопатить все данные. Тут бы уж точно все перестали понимать друг друга :)Для тебя как-то принципиально меняется логика этой задачи если надо отфетчить только одну строку, а не все? dbpatchпоизучай лучше честный план ... что вы все агрессивные то такие сегодня?В cлучае not exists может быть один из трех вариантов плана - anti join - nested loops anti - filter Любой из вариантов хуже чем одно сканирование в альтернативном решении (это мы тут еще не упоминаем connect by). Ты бы чуток вежливее разговариал, учитывая практически полное отсутсвие знаний и понимания, тогда агрессии в твой адрес, вероятно, было бы поменьше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:47 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
VintСергей Арсеньев, ну имхо перпендикулярная задача, но учитывая что в дырку сувать приходиться не раз и не два.... и каждый раз лопатить для этого, даже по индексному доступу, таблицу как то накладно, я бы таки посчитал все дырки и выписал на отдельный листик... ведь там еще за уши можно притянуть множество одновременно работающих пользователей, а тут уже каждому не посчитаешь отдельно) тут лочить придёться) да и вообще раз 10 уже обсуждали)) чего мусолить одно и тоже)) все есть в поиске) почему за уши? это вполне реальная задача, называется "резервирование номера договора" (или любого иного документа). никаких листиков не нужно, это банальный unique key и поле state = 'DRAFT' в таблице документов, с оптимистичным подходом - "быстро быстро вставили, и закоммитили, если не получились и попали на ORA-00001 - сходили еще раз за следующим номером". даже отдельный листик заводить не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:47 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbpatch, сначала хотел написать.... но потом понял что очередной непроходимо тупой нуб. как всегда одни и те же аргументы у тысяч идиотов. сначала выпятить своё решение, а потом скатываться до оценочных суждений... это БД. тут все измеряется попугаями. и твои поделки по попугаям в глубокой жопе. как и писал Фотошопчик. но тебе даже знаний на осознание этой простейшей истины не хватает.... дальше будет только троллинг)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:53 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbpatch, ORA-00001 ахаха.. у меня истерика.. я просто валяюсь.. просто сходили.. и просто еще раз выполнили ага.... просто.. все ж просто... у рукожопых всегда всё просто.. ну сходи на паре миллиардов строк.. сходи родной.. смотри чтобы потом тебе руки не поломали за кривожопство))) ты хоть представляеш сколько стоит rollback в некоторых транзакциях? хотя откуда... вся молодец же считает что проще обработать ошибку... у мени никогда не кончиться работа с такими как ты.. пиши исчо)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:56 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopdbpatchпоизучай лучше честный план ... что вы все агрессивные то такие сегодня?В cлучае not exists может быть один из трех вариантов плана - anti join - nested loops anti - filter Любой из вариантов хуже чем одно сканирование в альтернативном решении (это мы тут еще не упоминаем connect by). . там у него не только сканирование, там еще сортировка-группировка, и CPU cost не так уж и мал. но если тебе хочется полного феншуя - кто мешает сделать PL/SQL функцию, которая будет крайне бережно перебирать значения в индексе, отсчитывая цикл значений отдельно (фактически задача слияния сортировкой, один проход, array fetch, минимум LIO)? но тут запретили курсор и PL/SQL, ок. dbms_photoshopТы бы чуток вежливее разговариал, учитывая практически полное отсутсвие знаний и понимания, тогда агрессии в твой адрес, вероятно, было бы поменьше. о да, это значит я ВНЕЗАПНО начал обвинять кого-то в идиотизме и ламерстве, да? и да, я учитываю полное отсутствие знания и понимания сути задачи у других, даже примеры привожу задач из реальной жизни, что тут-то не так? или, о боже, это ты еще раз решил рассказать о своем ценном мнении о моей некомпетентности и неопытности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:56 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
Vintdbpatch, сначала хотел написать.... но потом понял что очередной непроходимо тупой нуб. как всегда одни и те же аргументы у тысяч идиотов. сначала выпятить своё решение, а потом скатываться до оценочных суждений... это БД. тут все измеряется попугаями. и твои поделки по попугаям в глубокой жопе. как и писал Фотошопчик. но тебе даже знаний на осознание этой простейшей истины не хватает.... дальше будет только троллинг)) тупой нуб? зачем так самокритично-то? впрочем да, неофитам это свойственно, не понимать, что современный код намного сложнее читать, чем писать, и писать нужно как можно более понятнее. ну так что там с явными преимуществами? вот так сразу слив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 17:58 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbpatchкроме того, никаких преимуществ перед connect by лично я не вижу, особенно в задаче - "мне нужно получить первый свободный номер из дырок" может ты их огласишь в явном виде?Ок, если тебе надо получить первый номер (и ты видимо уже подразумеваешь, что имеется необходимый уникальный индекс), то ты предлагаешь index scan min/max + connect by + nested loops + index unique scan. Альтернативный подход был бы аналитика + rownum <= 1 (ну это если тебе таки хватит мозгов понять что было написано Винтом и убрать оттуда группировку и rownum). В плане это было бы index range scan + window buffer + stopkey. Или простым языком: делаем фетч по индексу, пока не попалось значение, отличающееся от предыдущего более чем на 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 18:08 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbpatchтам у него не только сканирование, там еще сортировка-группировка, и CPU cost не так уж и малПоходу таки не хватило мозгов понять решение. Сортировки-группировки это украшательства, которые для нахождения "первой дырки" совсем не нужны. Ну а сравнивать [разные] запросы на основании CPU cost это даже не смешно. Жду тебя в других темах, это было увлекательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 18:14 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopСергей АрсеньевХорошо еще никто не додумался отстаивать точку зрения на предмет указания первого попавшегося такого числа с остановом, чтоб не лопатить все данные. Тут бы уж точно все перестали понимать друг друга :)Для тебя как-то принципиально меняется логика этой задачи если надо отфетчить только одну строку, а не все?Все-таки, в случае window buffer + stopkey индекс вычитывается целиком, так что при стремлении к совершенству может понадобится логику со сравнением надо вынести в PL/SQL . :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 18:32 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopdbpatchкроме того, никаких преимуществ перед connect by лично я не вижу, особенно в задаче - "мне нужно получить первый свободный номер из дырок" может ты их огласишь в явном виде?Ок, если тебе надо получить первый номер (и ты видимо уже подразумеваешь, что имеется необходимый уникальный индекс), то ты предлагаешь index scan min/max + connect by + nested loops + index unique scan. Альтернативный подход был бы аналитика + rownum <= 1 (ну это если тебе таки хватит мозгов понять что было написано Винтом и убрать оттуда группировку и rownum). . если не секрет, тебе самому мозгов-то хватает? серьезно? dbms_photoshopВ плане это было бы index range scan + window buffer + stopkey. Или простым языком: делаем фетч по индексу, пока не попалось значение, отличающееся от предыдущего более чем на 1. ок, и? разве оно было тут кем-то озвучено? ну давай потестим, оок (включаем режим тупого) Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. или нужно аналитику как-то по иному посчитать? (включаем выражение лица гомера симпсона). прости, в subquery factoring и прочих идиоамтических местных конструкциях не силен (подскальзываюсь и падаю лицом в лужу). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 18:36 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopdbpatchтам у него не только сканирование, там еще сортировка-группировка, и CPU cost не так уж и малПоходу таки не хватило мозгов понять решение. Сортировки-группировки это украшательства, которые для нахождения "первой дырки" совсем не нужны. Ну а сравнивать [разные] запросы на основании CPU cost это даже не смешно. Жду тебя в других темах, это было увлекательно. не надо меня ждать, давай лучше, со своей-то крутой мозгой-то, продемонстрируй зе бест практисиз солюшин. смогешь-то, или мозга сильно крутая, не на такие задачи заточенная? (извини, что говорю твоими эпатажами про качество чужих мозгов, ничего личного конечно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 18:38 |
|
||
|
как определить отсутствующий элемент в последовательности
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopНу а сравнивать [разные] запросы на основании CPU cost это даже не смешно. Жду тебя в других темах, это было увлекательно. ну почему не смешно? мне вот explain plan продемонстрировал cpu cost 23 и 3 соотвественно, очень близко к полученным практическим замерам (прости, режим тупого еще не выключен) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2017, 18:45 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39391420&tid=1886574]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
166ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 194ms |
| total: | 455ms |

| 0 / 0 |
