|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Задумался - а как в SQL делается поиск не по строчке, не по группе, а по отношению к соседним строчкам (когда задан сортировочный порядок, естессно). Нашел LAG(), что делает такие операции простыми, но непонятно как справлялись до нее. Очевидное решение - циклом, но тогда оптимизатор не у дел. Например, не используя встроенную функцию LAG или подобные, как можно быстро из таблицы в миллионы строк найти все локальные минимумы для val? В таблице две колонки: id/PK и val/number. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 02:26 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
123йй НеофитSQLЗадумался ты не думай, ты читай читай Я вас тут раньше не видел, вы наверное новенький. В Оракле сортировка делается оператором "order by". Какой именно алгоритм, я не знаю, но сортировка по индексу очень эффективна, свою писать вряд ли есть необходимость. Поиск локальных минимумов - это другая задача, она происходит на функциях или рядах чисел. Например.в ряде 3 2 7 4 3 8 локальные минимумы находятся в позициях 2 и 5. С помощью цикла, или встроенной функции Lag() эта задача решается в пару строчек, второй эффективнее первого. Мне интересно, среди людей которые помнят разницу между сортировкой и поиском минимумов, встречался ли кто-то с такой задачей? Есть более простая но похожая задача - эффективно найти самый большой промежуток в уже отсортированном ряде чисел, средствами SQL не используя LAG(). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 08:01 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Обычно это делалось через упорядочивание, нумерование, и самосоединение (self-join) или деревяшка (connect by) В этом случае есть гарантия что следующая строка будет как номер текущей+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. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 08:22 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
локальный минимум - это когда ближайшие левое и правое значение больше среднего? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 08:31 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Есть более простая но похожая задача - эффективно найти самый большой промежуток в уже отсортированном ряде чисел, средствами SQL не используя LAG(). зачем lag, есть же match_recognize (в примере какраз ищут W) гляньте Oracle для профессионалов Том Кайт (есть отличный перевод) там примеры как "без LAG" авторSQL — очень мощный язык и лишь очень немногие запросы в нем нельзя создать. По опыту знаю, что можно придумать хитрый SQL-запрос для получения ответа прак- тически на любой вопрос относительно любых данных. Однако производительность некоторых из этих запросов крайне низкая , да и придумать их непросто. Ряд запросов, которые сложно сформулировать на обычном языке SQL, весьма типичны: .... Аналитические функции, появившиеся в версии Oracle 8.1.6, создавались для реше- ния именно этих задач. Они расширяют язык SQL так, что подобные операции не толь- ко проще записываются, но и быстрее выполняются по сравнению с использованием чистого языка SQL. ps почему 5 Например.в ряде 3 2 7 4 3 8 локальные минимумы находятся в позициях 2 и 5 . ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 08:41 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
andreymx не усложняй.ему подходит Lag. поэтому если значание слева и справа больше - значит это локальный минимум ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 08:43 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Я вас тут раньше не видел, вы наверное новенький. Восхохотамши под лавкою. Действительно, все, кто по какой-то причине не стал отвечать в предыдущих ваших темах точно новички. Не в профиле же смотреть, с какого года человек на форуме. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 09:20 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Задумался - а как в SQL делается поиск не по строчке, не по группе, а по отношению к соседним строчкам (когда задан сортировочный порядок, естессно). Нашел LAG(), что делает такие операции простыми, но непонятно как справлялись до нее. Очевидное решение - циклом, но тогда оптимизатор не у дел. Например, не используя встроенную функцию LAG или подобные, как можно быстро из таблицы в миллионы строк найти все локальные минимумы для val? В таблице две колонки: id/PK и val/number. Как же ты любишь забивать гвозди микроскопом и не желаешь учиться)) SQL создавался не для инженерных расчетов и не для поисков экстремумов функций или числовых рядов, эти задачи решают с помощью императивных языков. "id/PK и val/number" - таблица представляет собой кучу, первичный ключ не отвечает за последовательность записей, другими словами для твоего ряда 3 2 7 4 3 8 ты должен определить поле по которому ты получишь именно такой порядок сортировкой. "как справлялись до нее" - императивные языки, но ты можешь написать запрос и без lag, он очень простой, справишься? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 12:50 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
123йй не усложняй.ему подходит Lag. На самом деле не подходит, 3 2 7 4 3 3 3 3 2 8. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 12:55 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL С помощью цикла, или встроенной функции Lag() эта задача решается в пару строчек, второй эффективнее первого. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 12:58 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode Как же ты любишь забивать гвозди микроскопом и не желаешь учиться)) graycode 123йй не усложняй.ему подходит Lag. На самом деле не подходит, 3 2 7 4 3 3 3 3 2 8. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 13:02 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
xtender пойдут lag/lead, просто следующее должно быть больше текущего На "площадке" неизвестно является ли она локальным минимумом, длина ее тоже неизвестна, т.е. если убрать 2, то вся площадка с трешками является локальным минимумом. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 13:08 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode, последняя трешка выведется, а нужно ли реально все выводить? и если нужно, то не лучше ли их сначала в диапазоны свернуть ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 13:26 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode 123йй не усложняй.ему подходит Lag. На самом деле не подходит, 3 2 7 4 3 3 3 3 2 8. ты знаешь лучше ТС что ему надо ? авторС помощью цикла, или встроенной функции Lag() эта задача решается в пару строчек, второй эффективнее первого. ЗЫж andreymx. не сразу понял какой смысл несет слово "среднее". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 14:02 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
xtender, Вы правы, если свернуть в диапазоны, то хватит lead/lag. Что нужно, что нет, да кто же этого неофита знает что ему нужно, понятно только одно, нахождением экстремумов функций он тоже не занимался)) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 14:06 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
+nvl при необходимости обработки крайних точек ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 14:09 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
xtender, 1,2,2,2,3 ps 1,2,3 3,2,1 1 ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 14:50 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Stax, xtender +nvl при необходимости обработки крайних точек с крайними точками Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
вообще я не думаю, что крайние точки должны учитываться, т.к. у них окрестность не определена ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 15:42 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
xtender вообще я не думаю, что крайние точки должны учитываться, т.к. у них окрестность не определена Неофит ищет минимум (не V|U), поетому карайние надо учитывать хотя, надо уточнять у бухов ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 16:09 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, Круто. Я вчера ломал голову как для решения такой задачи селф-джойн таблицу с непоследовательными ID, пока не вспомнил про rownum. D'oh! Наверное и через rank() можно селф-джойнить. Из вашего примера я вижу что через селф-джойн функция LAG эмулируется, и возможно очень эффективно. Спасибо, очень полезный прием. Я копал в этом направлении, но пока не вспомнил про rownum, мой подход требовал ключа без дырок. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 16:36 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
xtender НеофитSQL С помощью цикла, или встроенной функции Lag() эта задача решается в пару строчек, второй эффективнее первого. Я ожидал, что цикл хуже, т.к. не параллелится. Вот самый короткий цикл для простого случая (без обработки плато, или конечных точек) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
У вас наверное есть последний и могучий Оракл, с помощью которого можно легко сравнить тупой цикл и умные подходы со встроенными специализированными функциями. Вы считаете что на двух миллионах строчек цикл Неофита обгонит контору инженеров Оракла на этой несложной задаче? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 16:58 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Stax xtender вообще я не думаю, что крайние точки должны учитываться, т.к. у них окрестность не определена Неофит ищет минимум (не V|U), поетому карайние надо учитывать хотя, надо уточнять у бухов ..... stax Я не знаю кто такие бухи, но в данном случае интересовался общей идеей поиска по массиву без цикла. Было несколько полезных ответов, а также упоминания оконных функций и новой для 12.х функции match, о которой я не знал. Остается нераскрытым вопрос, так ли плох цикл для скорости запроса как его малюют в учебниках и руководствах. Надеюсь, xtender или другой опытный ораклист это сможет прояснить. Цикл я написал в другом сообщении, там места для оптимизации немного. Смотрит на строчки по одной, скорость линейная, индексы не помогают. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 17:08 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL кто такие бухи Бухгалтеры. Зачастую постановки задач на поиск минимума в цепочке сумм накладных, но с перламутровыми пуговицами, и только если Сатурн был в Тельце три последних дня по производственному календарю Бангладеша, приходят от них. Стас в основном в этой предметной области работает. НеофитSQL Цикл я написал в другом сообщении, там места для оптимизации немного Попробуйте с коллекциями. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 17:19 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Я ожидал, что цикл хуже, т.к. не параллелится. Многопоточность в других языках программирования уже отменили? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 17:44 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL У вас наверное есть последний и могучий Оракл Держите, сравнивайте Код: 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. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 17:56 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
env, не знаю, что вы делаете, но if из цикла надо убирать: Код: plsql 1.
отдельно и дополнительно надо понять, а для двух элементов ответ есть или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 18:14 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
booby env, не знаю, что вы делаете, но if из цикла надо убирать: Код: plsql 1.
отдельно и дополнительно надо понять, а для двух элементов ответ есть или нет? вообще-то, может оказаться неплохо подумать, а как жить на миллиардах и с широкими записями... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 18:15 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode НеофитSQL Я ожидал, что цикл хуже, т.к. не параллелится. Многопоточность в других языках программирования уже отменили? Я понятия не имею как в PL/SQL сделать многопоточный цикл, и будет ли от него толк в этом случае. Многопоточный цикл для линейного поиска по одной таблице звучит как приглашение хорошо получить граблями, даже для опытных кодеров. Вы попробуйте такой код здесь опубликовать, и быстро соберете список недочетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 18:55 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Я понятия не имею как в PL/SQL сделать многопоточный цикл, и будет ли от него толк в этом случае. Многопоточный цикл для линейного поиска по одной таблице звучит как приглашение хорошо получить граблями, даже для опытных кодеров. Вы попробуйте такой код здесь опубликовать, и быстро соберете список недочетов. Зачем в PL/SQL? В java или C# нет многопоточности? От Оракла требуется только отдать отсортированные данные, хотя можешь и сам отсортировать, дальше уже твоя забота, разбить полученное отсортированное множество на секции и обработать каждую секцию в своем потоке, склеить результат, все. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 19:01 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
env, то есть, ваш цикл с массивами, (если он на самом деле делает то, что подразумевается в задаче) мог бы так выглядеть. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
без проверки. объективно должно быть быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 19:01 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL, если на самом деле понятно, что такое авторМногопоточный цикл для линейного поиска по одной таблице то сымитировать его в pl/sql есть, по крайней мере, два пути - канальные функции и джобы. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 19:03 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
booby канальные функции и джобы. IPC не впечатляет... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:01 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
env Держите, сравнивайте Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:05 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode НеофитSQL Я понятия не имею как в PL/SQL сделать многопоточный цикл, и будет ли от него толк в этом случае. Многопоточный цикл для линейного поиска по одной таблице звучит как приглашение хорошо получить граблями, даже для опытных кодеров. Вы попробуйте такой код здесь опубликовать, и быстро соберете список недочетов. Зачем в PL/SQL? В java или C# нет многопоточности? От Оракла требуется только отдать отсортированные данные, хотя можешь и сам отсортировать, дальше уже твоя забота, разбить полученное отсортированное множество на секции и обработать каждую секцию в своем потоке, склеить результат, все. А, я понял о чем вы. Что для максимальной скорости для такой простой задачи надо данные взять в память и передать во внешнюю процедуру обработки. Тогда это простая задача для другого языка, где больше времени будет потрачено на передачу данных, чем на сам поиск. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:09 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Я ожидал, что цикл хуже, т.к. не параллелится. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:11 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
booby то сымитировать его в pl/sql есть, ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:15 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
xtender env Держите, сравнивайте ==>Elapsed: 00:00:01.22 -- SQL ==>Elapsed: 00:00:00.68 -- цикл Простой цикл без кэширования данных побеждает с отрывом вдвое! Если у нет дополнительных SQL секретов, это возможно просто не та задача, где оптимизатор Оракла может помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:15 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL А, я понял о чем вы. Что для максимальной скорости для такой простой задачи надо данные взять в память и передать во внешнюю процедуру обработки. Тогда это простая задача для другого языка, где больше времени будет потрачено на передачу данных, чем на сам поиск. А в чьей светлой головушке вдруг взялись мысли о том чтобы параллелить цикл для такой простой задачи? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:18 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Если у нет дополнительных SQL секретов, это возможно просто не та задача, где оптимизатор Оракла может помочь. требуется допилить, но мне лень и некогда Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:25 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode А в чьей светлой головушке вдруг взялись мысли о том чтобы параллелить цикл для такой простой задачи? да, это самый правильный вопрос во всех темах ТСа ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 20:25 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
xtender booby то сымитировать его в pl/sql есть, баги-то они в нём вылечили со сваливанием всего в один поток? Так-то замечтательно, конечно. Но джобы на коленке и веревочках, б о льшую степень веры в управляемость внушают. И особенно, когда оснастки под них унаследованы от славных предшественников за пару версий до появления dbms_parallel_execute. Оно конечно, - плесень и несовременно. Но свежемолодым подходом потрахивать - это надо глубокой степенью невинности располагать. Не всем это по возрасту положено. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 23:02 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
проходил мимо... booby канальные функции и джобы. IPC не впечатляет... а как она должна быть использована именно в этой задаче? (формулировку которой я не вполне понял - все черти в неозвученных деталях) Там где IPC очевидно нужна - в пользовательских агрегатах - она тщательно представлена чёрным ящиком. Ляпота. Сиди себе, стандартные интерфейсы выписывай и в потолок поплёвывай. Вот недавно совсем человек докладывал, как он с IPC в Oracle боролся и побеждал: https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1326622&msg=22158286 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1326622&msg=22158461 и, как вполне очевидно из текста, до сих пор гордится достигнутыми результатами. (Это не для смеха и хохота ссылки, а на подумать о предметах гордости). Возвращаясь к джобам - если сказано джоб, так за IPC расстрел на месте, без торжественного построения рассматривающих расстрел. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2020, 23:34 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode НеофитSQL А, я понял о чем вы. Что для максимальной скорости для такой простой задачи надо данные взять в память и передать во внешнюю процедуру обработки. Тогда это простая задача для другого языка, где больше времени будет потрачено на передачу данных, чем на сам поиск. А в чьей светлой головушке вдруг взялись мысли о том чтобы параллелить цикл для такой простой задачи? Вообще-то у вас. Я предложил что цикл параллелить непродуктивно, и похоже вы теперь с этим уже согласны. 22219709 Параллелить надо не цикл, а задачу в целом. Не все задачи поддаются параллелизации, и параллельное исполнение - не единственный способ оптимизации. Например, env улучшил скорость цикла, пожертвовав несколькими мегабайтами памяти. Bulk collect в массив и последующий доступ к массиву заметно быстрее чем цикл по таблице. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 00:13 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Пока цикл неоспоримый лидер, прикладная польза от LAG/LEAD() не вполне понятна. Они делают то же, что и цикл, только медленее? Или бывают задачи, где LAG() не только полезна, но ещё и быстрее простого цикла? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 00:16 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Вообще-то у вас. Я предложил что цикл параллелить непродуктивно, и похоже вы теперь с этим уже согласны. 22219709 Где ты предположил что цикл параллелить непродуктивно? Ты напротив написал что цикл хуже , так как не параллелится или ты уже не в состоянии понять то что сам же и написал? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 00:35 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
graycode НеофитSQL Вообще-то у вас. Я предложил что цикл параллелить непродуктивно, и похоже вы теперь с этим уже согласны. 22219709 Где ты предположил что цикл параллелить непродуктивно? Ты напротив написал что цикл хуже , так как не параллелится или ты уже не в состоянии понять то что сам же и написал? Охотно поясню. Я выразил мнение что решение с циклом хуже, т.к. циклы плохо поддаются параллельной оптимизации. Вы сказали что "а у нас в джаве циклы можно параллелить". Но потов вам эта идея разонравилась, и вы стали искать автора. Возможно, я неверно вас понял, и вы все еще хотите эту задачу решать многопоточно через джаву. Я не против, попробуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 02:11 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Я попробовал измерить скорость этой задачи через селф-джойн (как предложил Вячеслав), получилось заметно быстрее простого цикла. Код: 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.
Это потому, что я индекс включил, или просто у Оракла в старых версиях циклы плохо работали? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 02:35 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Это потому что у тебя вырожденный случай -- нумерация очередности без пропусков ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 02:37 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Это потому что у тебя вырожденный случай -- нумерация очередности без пропусков Да, мне надо было свою таблицу делать, а не тырить у env. Мне понравилось лаконичное заполнение, и я позаимствовал. Кстати, кто то ещё заметил, насколько близко в разных тестах совпало число минимумов для 1м строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 04:20 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Это потому что у тебя вырожденный случай -- нумерация очередности без пропусков не, ставлю сто пудов на то, что у него построчный фетч. Конкретно в этом бессмысленном примере других причин быть не должно. Т.е., либо plsql_debug = true, либо plsql_optimize_level меньше 2-ки выполни перед запуском скрипта: Код: plsql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 04:45 |
|
Близкострочные операции
|
|||
---|---|---|---|
#18+
НеофитSQL Охотно поясню. Я выразил мнение что решение с циклом хуже, т.к. циклы плохо поддаются параллельной оптимизации. Вы сказали что "а у нас в джаве циклы можно параллелить". Но потов вам эта идея разонравилась, и вы стали искать автора. Возможно, я неверно вас понял, и вы все еще хотите эту задачу решать многопоточно через джаву. Я не против, попробуйте. И тут Остапа понесло ... даже не брезгует выдумывать цитаты)) Там где у тебя возникают глупые идеи параллелить цикл, нормальные люди начинают серьезно думать и смотреть возможности применения подходящих для решения задачи инструментов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2020, 13:56 |
|
|
start [/forum/topic.php?all=1&fid=52&tid=1880775]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 152ms |
0 / 0 |