CftClub.ru
Клуб специалистов ЦФТ-Банк

Запросы PL+ или SQL
На страницу 1, 2  След.
 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle
Предыдущая тема :: Следующая тема  
Автор Сообщение
De Mian
Профи


Вступление в Клуб: 26.09.2008
СообщениеВт Ноя 06, 2018 11:36   Запросы PL+ или SQL Ответить с цитатой
Полезность: Нет оценки
Небольшой мини опрос-вопрос:
Кто какой подход предпочитает предпочитает при написании запросов в ЦФТ и почему именно такой выбор?:
1) Синтаксис предложенный платформой развития ЦФТ, где используется точечная нотификация при разименовании реквизитов и соответственно работа соединения таблиц типов ложится на компилятор:
Код:
      select  x(
               x.[PROV_USER].[NAME]
            )
      in ::[MAIN_DOCUM] all
      where
         x.[ACC_DT].[MAIN_V_ID]   like '40702%'
            AND
         x.[ACC_KT].[MAIN_V_ID]   like '706%'

2) стандартный синтаксис SQL, где явно указывается ТБП и условия их соединения:
Код:
      select  x(
               usr.[NAME]
            )
      in ::[MAIN_DOCUM] ,
            (::[AC_FIN] af_d),
            (::[AC_FIN] af_k),
            (::[USER] usr)
         all
      where
         x.[PROV_USER]=usr%id(true)
            and
         x.[ACC_DT]=af_d
            and
         x.[ACC_KT]=af_k
            and
         af_d.[MAIN_V_ID]   like '40702%'
            and
         af_k.[MAIN_V_ID]   like '706%'
Admin
Site Admin


Вступление в Клуб: 09.06.2007
СообщениеВт Ноя 06, 2018 12:28    Ответить с цитатой
Полезность: Нет оценки
Для простых случаев результат компиляции 1 и 2 будет одинаков, поэтому я предпочел бы вариант 1.

"Ручную" связку, как и чистый PL/SQL, использую либо при хитрых условиях, либо при необходимости оптимизировать запрос.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеСр Ноя 07, 2018 05:19    Ответить с цитатой
Полезность: Нет оценки
Когда много таблиц в первом варианте компилятор так в пакете запрос извратит, что приходится переписывать на второй вариант хотя бы частично.
В общем если в запросе собралось больше трёх таблиц , после варианта 1 всегда иду в пакет и смотрю что же родил больной недомозг.
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеЧт Ноя 08, 2018 06:14    Ответить с цитатой
Полезность: Нет оценки
De Mian пишет:
Небольшой мини опрос...

Предпочитаю первый вариант, потому что зачастую он выглядит опрятнее, чем SQL и не затеняет бизнес-логику.
Но если план становится кривым, приходится запрос переписывать по-другому (c SQL-запросами для не-ИБСО проектами я поступаю полностью аналогично).
То есть Admin +1

Alkov пишет:
...что же родил больной недомозг.
улыбнуло Smile Но всё-таки правила построения SQL по PL+ вполне понятны и даже логичны, так что позволю себе не согласиться.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеПт Ноя 09, 2018 10:14    Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:
Но всё-таки правила построения SQL по PL+ вполне понятны и даже логичны, так что позволю себе не согласиться.


нифига не логичны

на группировке часто лажает, приходится явно прописывать

А то скомпилит чорт знает во что успешно, а потом в рантайме падает с ошибкой
De Mian
Профи


Вступление в Клуб: 26.09.2008
СообщениеПт Ноя 09, 2018 23:37    Ответить с цитатой
Полезность: Нет оценки
Эмиралька пишет:

Alkov пишет:
...что же родил больной недомозг.
улыбнуло Smile Но всё-таки правила построения SQL по PL+ вполне понятны и даже логичны, так что позволю себе не согласиться.

Вполне согласен. тем более что все правила подробно расписаны в документе PLPHINTS.TXT и либо вы понимаете как работает компилятор .. либо каждый раз искренне удивляетесь результату.
vtar пишет:

нифига не логичны

на группировке часто лажает, приходится явно прописывать

А то скомпилит чорт знает во что успешно, а потом в рантайме падает с ошибкой

Дайте пример.

Вообще этот небольшой опрос мнений затеял чисто из-за того что хоть и редко, но встречаются SQL-аборигены, которые вполне намеренно и явно не используют PL+ программируя в ЦФТ, объясняя свой выбор больше суевериями, чем конкретными фактами. Один аргумент правда слышал - ЭТО СЛОЖНО ПОНИМАТЬ, но это настолько субъективно, что тут остается только посочувствовать.
Я допускаю, что может что-то я не вижу или не понимаю и поэтому искренне интересно почему люди добровольно выбирают рубить дрова с помощью топора, зажатого между ног, вместо того чтобы взять топор в руки.
De Mian
Профи


Вступление в Клуб: 26.09.2008
СообщениеЧт Дек 27, 2018 14:04    Ответить с цитатой
Полезность: Нет оценки
По теме. Из разряда: нарочно не придумаешь или диверсанты среди нас.
Это реальный пример , не выдумка. собственно почему я и запилил эту тему. Хотя тут ближе тема "Юмор на работе".
Было код:
Код:
/*   select x( x )
   in P_OBJ.[REGISTR] all
   where x.[REG_REF] = P_REG
      and  x.[ACC_REF]->(::[AC_FIN])[MAIN_V_ID] like p_bal ||'%'   */

Стало.. но комментарий просто ... фиерия..
Код:

   -->  -- привел запрос к более внятному виду
   select v(x%id : id)
   in ::[VEKSEL_GUIDE]
      ,(::[REG_VEK] all : x)
      ,(::[AC_FIN] all : ac)   
      all
   where v%id=P_OBJ
      and x%collection=v.[REGISTR]
      and x.[REG_REF]=P_REG
      and ac%id=x.[ACC_REF]
      and ac.[MAIN_V_ID] like p_bal||'%'
   
   into result;


В плане SQL так же.. было объединение 2-х таблиц, стало объединение 3-х. Действительно , стало и проще и оптимальней. и главное понятней! Very Happy Shocked
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеЧт Дек 27, 2018 14:29    Ответить с цитатой
Полезность: Нет оценки
Да , в такой нотации PL+ вроде и не нужен Smile
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПт Дек 28, 2018 02:44    Ответить с цитатой
Полезность: Нет оценки
De Mian пишет:
Эмиралька пишет:

Alkov пишет:
...что же родил больной недомозг.
улыбнуло Smile Но всё-таки правила построения SQL по PL+ вполне понятны и даже логичны, так что позволю себе не согласиться.

Вполне согласен. тем более что все правила подробно расписаны в документе PLPHINTS.TXT и либо вы понимаете как работает компилятор .. либо каждый раз искренне удивляетесь результату.


Остаюсь при своём мнении, на сложных запросах pl/plus чудит, пока не пропишешь в запросе таблицы и связи явно.
De Mian
Профи


Вступление в Клуб: 26.09.2008
СообщениеПт Дек 28, 2018 09:15    Ответить с цитатой
Полезность: Нет оценки
Alkov пишет:
De Mian пишет:
Эмиралька пишет:

Alkov пишет:
...что же родил больной недомозг.
улыбнуло Smile Но всё-таки правила построения SQL по PL+ вполне понятны и даже логичны, так что позволю себе не согласиться.

Вполне согласен. тем более что все правила подробно расписаны в документе PLPHINTS.TXT и либо вы понимаете как работает компилятор .. либо каждый раз искренне удивляетесь результату.


Остаюсь при своём мнении, на сложных запросах pl/plus чудит, пока не пропишешь в запросе таблицы и связи явно.


Чтобы разбить или подтвердить это суеверие нужен просто пример...ну почему то никто не может его предоставить и все уходят в тень. Все говорят : видел, было, когда-то, но никто не может дать конкретный пример. Можно тогда вообще plsql вставками программировать ссылаясь на то, что PL+ нелогичен. К слову и такое встречалось.Shocked

И что значит сложный запрос ? я встречал людей для которых работа с LOB была сложной и непонятно, а макросы вообще вводят в ступор. Значит ли что что -то не так с lob и макросами? Это всё очень-очень субъективно. Объективно то - что есть описание PLPHINTS.TXT. За всё время я сталкивался только с одним примером (пару раз за 15 лет)в котором нельзя было указать направление внешнего соединения средствами PL+ используя точечную нотацию.

Пример в студию.
Alkov
Профи


Вступление в Клуб: 23.09.2010
СообщениеПт Дек 28, 2018 10:22    Ответить с цитатой
Полезность: 1
De Mian пишет:
Alkov пишет:
De Mian пишет:
Эмиралька пишет:

Alkov пишет:
...что же родил больной недомозг.
улыбнуло Smile Но всё-таки правила построения SQL по PL+ вполне понятны и даже логичны, так что позволю себе не согласиться.

Вполне согласен. тем более что все правила подробно расписаны в документе PLPHINTS.TXT и либо вы понимаете как работает компилятор .. либо каждый раз искренне удивляетесь результату.


Остаюсь при своём мнении, на сложных запросах pl/plus чудит, пока не пропишешь в запросе таблицы и связи явно.


Чтобы разбить или подтвердить это суеверие нужен просто пример...ну почему то никто не может его предоставить и все уходят в тень. Все говорят : видел, было, когда-то, но никто не может дать конкретный пример. Можно тогда вообще plsql вставками программировать ссылаясь на то, что PL+ нелогичен. К слову и такое встречалось.Shocked

И что значит сложный запрос ? я встречал людей для которых работа с LOB была сложной и непонятно, а макросы вообще вводят в ступор. Значит ли что что -то не так с lob и макросами? Это всё очень-очень субъективно. Объективно то - что есть описание PLPHINTS.TXT. За всё время я сталкивался только с одним примером (пару раз за 15 лет)в котором нельзя было указать направление внешнего соединения средствами PL+ используя точечную нотацию.

Пример в студию.


Нельзя так просто взять и привести пример.
Я их не коллекционирую, попадётся в коде - выложуWink
De Mian
Профи


Вступление в Клуб: 26.09.2008
СообщениеПн Апр 29, 2019 10:22    Ответить с цитатой
Полезность: Нет оценки
De Mian пишет:

Пример в студию.


Ну что ж.... примеров не было.
Значит всё же это суеверие.
Буду теперь коллег суеверных, на эту страницу отправлять для развенчивания мифов.
vtar
Эксперт


Вступление в Клуб: 20.03.2009
СообщениеВт Апр 30, 2019 13:19    Ответить с цитатой
Полезность: Нет оценки
De Mian пишет:
De Mian пишет:

Пример в студию.


Ну что ж.... примеров не было.
Значит всё же это суеверие.
Буду теперь коллег суеверных, на эту страницу отправлять для развенчивания мифов.

то , что ты не видел суслика
не значит что его нет
De Mian
Профи


Вступление в Клуб: 26.09.2008
СообщениеВт Апр 30, 2019 13:54    Ответить с цитатой
Полезность: Нет оценки
vtar пишет:
De Mian пишет:

Ну что ж.... примеров не было.
Значит всё же это суеверие.
Буду теперь коллег суеверных, на эту страницу отправлять для развенчивания мифов.

то , что ты не видел суслика
не значит что его нет


Да, в основном именно такой аргумент звучит или что-то вроде "Оракл\ЦФТ не хочет"...
kai
Профи


Вступление в Клуб: 16.08.2012
СообщениеПн Май 06, 2019 10:55    Ответить с цитатой
Полезность: Нет оценки
Правила работы транслятора PL+ прописаны в файле PLPHINTS.TXT, входящем в состав дистрибутива технологического ядра.

Поддержка синтаксиса ANSI JOIN реализована в ТЯ 7.6.
Описание синтаксиса см. PLPLUS.doc п. 1.2.13.5.3., п. 1.4. Синтаксис.
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Разработка в PL/PLUS. Оптимизация запросов Oracle Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru