|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
НеофитSQL Оракл не рекомендуется использовать для хождения в интернет? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 19:56 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
Андрей Панфилов НеофитSQL Оракл не рекомендуется использовать для хождения в интернет? Справедливое замечание, из соображений бережливости (экономии ЦПУ?). С другой стороны, Оракл придумал/внедрил целую библиотеку для того, чтоб PL/SQL мог общаться с веб сайтами. https://docs.oracle.com/database/121/ARPLS/u_http.htm#ARPLS70954 Если использование встроенных функций оракла для доступа к интернету считается плохим тоном, как принято это делать, учитывая что задача должна инициироваться по SQL запросу? подать сигнал на на обновление внешнему (не-Оракл) скрипту через виртуальную колонку? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 20:34 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
xtender НеофитSQL, Теперь все понятно, ваше понимание параллельного выполнения неверно, оттого и все проблемы и изчально странный вопрос. Вам стоит это изучить досконально, тогда и этот вопрос бы не появился. Пока достаточно вам запомнить, что никакого порядка нет пока не указан order by. Вам все понятно, но вы толком ничего пока не сказали. Из скромности? Возможно, у вас есть глубокие познания в этом вопросе, но полезный вклад в эту тему вам пока не удалось сделать. В 22196853 я изложил как я понимаю исполнение параллельных подзапросов в Оракле (когда они включены, для педантов :)) Для человека с практическим опытом было бы легко указать ошибку, тем самым улучшив не только мое понимание, но один из немногочисленных русскоязычных ресурсов по SQL. Если вы здесь с другой целью, то с какой? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 20:54 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
НеофитSQL, НеофитSQL В 22196853 я изложил как я понимаю исполнение параллельных подзапросов в Оракле (когда они включены, для педантов :)) Все эти "оракл запускает несколько запросов одновременно", "три подзапроса А,Б,В все начались", "порядок завершения", "результаты Б и В будут сидеть в памяти" - это все полный бред в контексте даже простых планов, даже без параллельного выполнения. Поймите сначала как хотя бы простые планы читать. Не надо пытаться перескочить на обсуждение тем, азов которых еще не понимаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 21:10 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
НеофитSQL С другой стороны, Оракл придумал/внедрил целую библиотеку для того, чтоб PL/SQL мог общаться с веб сайтами. https://docs.oracle.com/database/121/ARPLS/u_http.htm#ARPLS70954 Если использование встроенных функций оракла для доступа к интернету считается плохим тоном, как принято это делать, учитывая что задача должна инициироваться по SQL запросу? подать сигнал на на обновление внешнему (не-Оракл) скрипту через виртуальную колонку? UTL_HTTP - это нечто, появившееся в версии 7.3.3 (это аж прошлый век) и тянущееся до текущих версий разве что из соображений обратной совместимости, а вот рассчитывать на то, что БД сможет полноценно общаться по HTTP с сегодняшним интернетом совершенно не следует, поскольку в HTTP сейчас понавернуто столько, что индусы из оракла за этим принципиально не поспевают. Если нужно делать фигню, то можете делать ее через external table , там на каком-нить петоне можете хоть перпендикулярно почту забирать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 21:11 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 21:16 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Спасибо, я понял про внешние таблицы, я такую недавно использовал чтобы прочитать директорию на сервере, но потом все-таки переделал на "родную" джава-функцию, для простоты. Директорию читать из Оракла наверное можно, это как одну картофелину в S-классе перевезти. Я в целом понял что если задача посложнее, и для Оракла непрофильная, то лучше ее разгрузить в другое место (возможно, и другой хост через ssh), и общаться через external table, как в вашем примере. Почитаю, в какой сессии исполняются действию для таких таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 21:35 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
xtender, Увы, параллельное исполнение мне пока недоступно (версия 11.2). Документация доступна. Давайте, вы мне немного поможете там, где можно обойтись без терминов. Код: plsql 1. 2. 3. 4.
Мое понимание параллельности подзапросов было такое: - оракл запускает несколько запросов одновременно. Для примера, три подзапроса А,Б,В все начались в пределах 10-миллисекунд. - Подзапрос А продолжался 10 секунд, подзапрос Б 5 секунд, подзапрос В - 7 секунд. Порядок завершения: Б,В,А - учитывая что задана сортировка через order by, результаты Б и В будут сидеть в памяти пока запрос А не завершится. - когда запрос А завершится, результат будет отсортирован и выдан в порядке А,Б,В (это исходное условие). - Параллелизм позволяет такую задачу решить за 10 секунд, вместо 22 секунд при последовательном исполнении. Идентичная параллельная задача на другом языке. Исполняется параллельно, соответствует описанию выше. Терминов не требует, хотя при желании можно долго и нудно рассказывать про методы синхронизации исполнения на уровне 0 для многоядерных процессоров :) Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Подзапросы стартанули "одновременно" (очередно, но в пределах малого промежутка времени), самый долгий занял 10 секунд, поэтому весь запрос занял 10 секунд, но строки вернулись не в порядке запуска запросов, а в каком-то другом. Скорее всего в порядке завершения запросов, но и это Оракл вроде не гарантирует. Где-то есть ошибка? Если есть, скажите, пожалуйста, в какой строчке. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 22:15 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
Я ранее упомянул, что нашел-таки решение без "бейсика", но оно не изящнее, хоть и отвечает всем моим требованиям. Прошу не пинать, это в товарный код не идет, упражнение для моего образования - на что способен SQL Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 22:35 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
НеофитSQL обойтись без терминов ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 01:51 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
xtender Здесь же такой профанацией заниматься не стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 06:45 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
НеофитSQL Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
У вас выражения "select ..." расположены одно под другим, т.е. последовательно, нет никаких оснований полагать что при таком расположении они будут выполняться параллельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 08:26 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
НеофитSQL Идентичная параллельная задача на другом языке Нет НеофитSQL Меня интересует порядок запросов в исходном коде, и PL/SQL содержит макро для этого. SQL, увы, его не содержит. Как ещё вам объяснить, что зелёное и мягкое сравнивать нет смысла? НеофитSQL у меня задача показать в запросе первые 10 сообщений из каждого из трех email почтовых ящиков на разных континентах Зачем для этого СУБД? Если требуется анализировать эти сообщения, то отдельно обеспечьте регулярную загрузку сообщений в таблицы, отдельно делайте запрос к этим таблицам. Да, оракл может и "на лету", но зачем?! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:06 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
Андрей Панфилов НеофитSQL Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
У вас выражения "select ..." расположены одно под другим, т.е. последовательно, нет никаких оснований полагать что при таком расположении они будут выполняться параллельно. Это как раз один из сценариев, для которых Оракл ввел параллелизм в 12й версии. Подробнее об этом можно прочитать здесь: https://docs.oracle.com/database/121/VLDBG/GUID-1F4C90F9-3EF5-423A-B55B-2593FB3F1433.htm Если вы только присоединяетесь к теме: до разрешения параллелизма Оракл гарантировал результат UNION ALL в том же порядке, как селекты написаны в коде запроса - это удобно тогда, когда нет удобного ключа сортировки. При параллельном исполнении селектов порядок нарушался, и для его восстановления требуется order by. Вопрос темы заключался в том, как избежать ручной нумерации строк а-ля бэйсик (10, 20, 30, 35, ..). В PL/SQL есть встроенное макро $$PLSQL_LINE, которое дает номер строки исходника, и оно для этой цели просто идеально. Я извернулся и написал свою функцию QueryLine() которая возвращает номер строки, но она требует GUID, что не так элегантно. Зато теперь результаты параллельных селектов возвращаются в том же порядке, что написаны, и если мне нужно передвинуть строчки вверх-вниз в огромном селекте, мне не нужно помнить каждый раз менять ручную нумерацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:39 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
НеофитSQL как избежать ручной нумерации строк а-ля бэйсик (10, 20, 30, 35, ..). НеофитSQL Я извернулся и написал свою функцию QueryLine() которая возвращает номер строки, но она требует GUID Разумеется, заменить число на строку в 36 символов и вызов функции - очень элегантное решение. Автор, может уже поясните, какую реальную задачу пытаетесь столь извращённо решить? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:49 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
env Автор, может уже поясните, какую реальную задачу пытаетесь столь извращённо решить? Автор просто пытается перенести подходы и практику программирования на императивных языках в декларативные. Наблюдаю с удовольствием. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:52 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
env, ты слова не путай человеку. Ясно, что "элегантный" это рояль, а он говорил изящное , подразумевая "решение". хорошо, хоть не грациозное... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:58 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
andrey_anonymous env Автор, может уже поясните, какую реальную задачу пытаетесь столь извращённо решить? Автор просто пытается перенести подходы и практику программирования на императивных языках в декларативные. Наблюдаю с удовольствием. Ну, это не обязательно всегда преступление. Но читается, правда, с французским прононсом при разговоре прозой. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:06 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
env НеофитSQL как избежать ручной нумерации строк а-ля бэйсик (10, 20, 30, 35, ..). НеофитSQL Я извернулся и написал свою функцию QueryLine() которая возвращает номер строки, но она требует GUID Разумеется, заменить число на строку в 36 символов и вызов функции - очень элегантное решение. Автор, может уже поясните, какую реальную задачу пытаетесь столь извращённо решить? Так вот же :) НеофитSQL как избежать ручной нумерации строк а-ля бэйсик (10, 20, 30, 35, ..). Решение с гуидами не требует ручной перенумерации (параллельные подзапросы вернутся в порядке как записаны, и строчки можно свободно двигать внутри UNION ALL), но выглядит громоздко, не говоря уже о внутренностях функции QueryLine, которая ковыряется в блобах исходного кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 17:16 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
НеофитSQLТак вот же :) Это не задача, это попытка натянуть сову на глобус. Какую задачу в терминах теории множеств (на которой и базируется SQL) Вы пытаетесь решить? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 17:20 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Какую задачу .... Сделать текстовый редактор на SQL ? Автор уже упоминал, что ему нужно и в интернет лазать. Может даже и на полноценный Web Browser замахнулся! Пожелаем ему успехов. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 17:30 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
НеофитSQL которая ковыряется в блобах исходного кода. исходного кода чего? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 18:24 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Это не задача, это попытка натянуть сову на глобус. Какую задачу в терминах теории множеств (на которой и базируется SQL) Вы пытаетесь решить? Сугубо прикладную - улучшить понимание нового для меня языка и его возможностей. Поэтому примеры не затасканные из учебника, а необычные, требующие живого мышления. В рабочем коде все будет скучно и просто, с комментариями и без экзотики. Браузер в Оракле? Нечем рендерить, поэтому вряд ли, да и задача большая, не для примера. А вот забацать простой стрим крипто на SQL - это стОящий челлендж. Но поскольку вряд ли крипто специалисты будут тут слоняться, это прикол для другого форума. Солнышко светит, травка растет. Кто легче характером, тот дольше живет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 18:57 |
|
Сохранение порядка строк в UNION ALL
|
|||
---|---|---|---|
#18+
НеофитSQLСугубо прикладную - улучшить понимание нового для меня языка и его возможностей. В таком случае именно изучение теории множеств Вам поможет. НеофитSQLПоэтому примеры не затасканные из учебника, а необычные, требующие живого мышления. Рекомендую https://www.sql-ex.ru Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 19:20 |
|
|
start [/forum/topic.php?fid=52&msg=39998549&tid=1880894]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 316ms |
total: | 449ms |
0 / 0 |