powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
21 сообщений из 21, страница 1 из 1
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429134
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте! Всё же WITH - это из Оракла, вопрос теоретический. Интересуюсь +/- 'ми выбранной тактики.

Попросили отчёт типа квартального, описанный словесным алгоритмом, с итерациями, ветвлениями, неопределённостями формулировок и др. "украшениями".
Вообще-то напрашивалось "50 на 50" SQL и PL/SQL, но боялся зашиться с DBMS_OUTPUT и циклами, предположив, что задача будет проясняться и доформулировываться по мере разработки. Решил пойти "теоретико-множественным" путём.

В сущности, выбирал из 3-х вариантов, все в базе:
Код: plaintext
1.
2.
-- полностью на основе WITH  AS
-- PL/SQL с преимущественной обработкой циклами
-- PL/SQL пополам с курсорами, возможно и с циклами
Делал т.н. "эволюционным методом": создал боле-мене понятные "кубики" из курсоров и на их основе комбинировал. Раз даже начинал сначала, но всё свелось к тому же.

В итоге 15 промежуточных и конечных курсоров, а целиком типа такого:
Код: plsql
1.
2.
3.
4.
5.
6.
WITH 
	ccc1 AS ( select ...),
	ccc2 AS ( select ...),
	...
	ccc14 AS ( select ...)
Select ... ;

Он в принципе скорость не особо критична, ну выполняется 15-20 сек. и ладно. Из оптимизации: убрал, где можно, тормозящие DISTINCT, но кое-где пришлось и оставить.
Вымучил версию 9.3.1, 550 строк вместе с комментами, визуальными отступами, ин-лайн строками для промежуточной отладки каждого курсора. Сделал описание со схемой взаиимодействия кубиков.

Не думаю, что очень уж криво сделал, но всё же из-за не большой самостоятельной практики PL/SQL мне не ясны принципиальные подводные камни выбранной реализации в сравнении с другими. Вот об этом хотел бы услышать. Единственное, что запрос этот полностью серверный и другой вариант не рассматриваю.
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429144
exp98Всё же WITH - это из ОраклаWITH - это из ANSI-стандарта SQL, поддерживается всеми прогрессивными СУБД.
дальше не читал....
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429183
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

Непонятно какой ответ ты ожидаешь на абстрактный вопрос в вакууме.
Если with использовано для декомпозиции логики и в каждом из них использован базовый SQL (без рекурсии и всяких моделей), то допустимый подход.
Другое дело, что у многие повторяют мантру, что курсоры это плохо не понимая почему именно. На самом деле, можно управлять какую порцию данных фетчить из курсора за раз и при грамотном подходе сделать решение, как правило, не уступающее по произвоизводительности SQL подходу (опять же, случаи бывают разные, все решает специфика).
Жирный минус в случае PL/SQL, что надо создавать пользовательский тип для строки результата и соответсвенно вызывать конструктор для каждой строки (ну или куда-то записывать результат перед выдачей).
Категорически рекомендуется для ознакомления эта white paper 20193942 .
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429197
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, мог и не знать. В конце 90-х я входил в SQL по 92-му и не помню чтоб вокруг упоминали об WITH. И недавно, довелось в старом Sybase - и тоже не встречал. А дальше тоже м.ск-ть не читал , поэтому и ассоциирую его с ораклом.
Тем не менее, сравнение с PL/SQL и база всё равно Оракла.
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429204
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,
зачётный ответ, примерно таких и ожидал!
Нет, рекурсий не использовал, здесь не потребовалось, с моделями я наверное не знаком.
Из специфики - отчёт из тех, где сетевая синхронизация, т.е. 100% актуальность не актуальна.
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429207
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот да,
"Best and Worst Practices" - именно на эту тему спрашивал
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429228
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98не помню чтоб вокруг упоминали об WITH. И недавно, довелось в старом Sybase - и тоже не встречал. А дальше тоже м.ск-ть не читал , поэтому и ассоциирую его с ораклом(JFYI):
ANSI/ISO/IEC International Standard (IS) Database Language SQL — Part 2: Foundation (SQL/Foundation) «Part 2» September 1999 7.12 <query expression>(...)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<with clause> ::= WITH [ RECURSIVE ] <with list>
<with list> ::=
<with list element> [ { <comma> <with list element> }... ]
<with list element> ::=
<query name>
[ <left paren> <with column list> <right paren> ]
AS <left paren> <query expression> <right paren>
[ <search or cycle clause> ]
<with column list> ::= <column name list>
(...)
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429233
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже не так уж долго после первых наводок начинает складываться уверенность, что собственно недостатки могут скрываться преимущественно в оракловых фичах. До сих пор я только умозрительно так думал.
Вот ещё себе самому ссылка .
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429318
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

Чепуху там написал Дональд, при том сильно устаревшую, что удивляет учитывая дату статьи February 23, 2015.
Лучше вообще не читай тот сайт.
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429321
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopЛучше вообще не читай тот сайт.погорячился, на мой взгляд
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429328
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,
да я там текст только пробежал наискосок, общаий смысл ясен - ну и х...орошо.
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429332
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--dbms_photoshopЛучше вообще не читай тот сайт.погорячился, на мой взглядЯ надеюсь когда-нибудь придет время и ты осознаешь опасность бурлесонщины.

PS. Абстрагируясь от его чудо-сайта, я вообще удивляюсь как он после споров с Льюисом на forums.oracle.com,
где он выглядел полным клоуном, еще умудряется привлекать клиентов. Вероятно, раскрутке у него стоит поучиться, но не Ораклу.
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429341
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня печалит, что никто больше в разделе не не хочет высказать "Best and Worst Practices" на архитектурную философию с высоты своего опыта... Может, просто главное уже сказано?
Задавая вопрос, я боялся, что вскроется ситуация, когда задумка неплохая, но к-рая реализуема с костылями в силу разных фич.
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429343
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Меня печалит, что никто больше в разделе не не хочет высказать "Best and Worst Practices" на архитектурную философию с высоты своего опыта... Может, просто главное уже сказано?
Задавая вопрос, я боялся, что вскроется ситуация, когда задумка неплохая, но к-рая реализуема с костылями в силу разных фич.Да, бывает вскрывается ситуация, "когда задумка неплохая, но к-рая реализуема с костылями в силу разных фич".

С ув. Капитан Очевидность.
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429345
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98,

Почему не использовать PL/SQL и коллекции?
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429373
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в МССКЛ вполне себе работает
Код: sql
1.
with t as(select 1 id) select * from t

id1
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429381
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

Это к чему было написано?
Попробуй в МССКЛ теперь это

Код: plaintext
1.
2.
3.
select * from
(with t as
(select 1 id from dual)
select * from t) z
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429393
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

я тебе и так верю
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429446
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarockПочему не использовать PL/SQL и коллекции? А почему этот вариант перевесил бы? Свои опасения я описал, в первую очередь - это сложности отладки, ИМХО, когда в SQL всё векторно и сразу перед глазами.
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429449
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98А почему этот вариант перевесил бы?потомучто быстро
...
Рейтинг: 0 / 0
об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
    #39429778
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быстро в написании, отладке и доработке, в условиях изначальной неясности конечного результата?
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / об "+/-" тактики запроса на основе WITH cc1 AS (), cc2 AS () ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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