BA> если Вы делаете через анус (execute statement), можете не обращать внимания
BA> на такие мелочи как индексы, оптимизация и пр.

    Подождите а кто сказал что execute statement не использует индексы ?
    И кто сказал что через execute statement не оптимальнее ?

BA> зачем execute statement в выборке из ЧЕТЫРЕХ таблиц?
BA> у нас в системе тоже есть таблицы сущностей, историй, условий выборки (для
BA> себя называем их фильтрами), ES - запрещен

    У меня в принципе execute statement был выбран как наименьшее зло
    для организации поиска по выбранным параметрам пользователя ...
    В частности было 3 варианта

       1) вписывать параметры в WHERE
            - отменён из-за тормознутости если в условии встречается OR

       2) Наплодить одинаковых процедур с разными параметрами
            - отменён из-за ... геморойности сопровождения,
              синхронизации изменений, ...

       3) Собрать запрос по кусочкам в переменную и выполнить его ...
            - единственный увиденный "-" это доп. код в начале
              процедуры (~20 строк) сборки этого запроса ...

     Есть другие варианты ? Подскажите плиз ....

PS:  для разьснения простейший вариант дать выбор пользователю
     найти товар по части кода по 3-м условиям
       1) с начала кода
       2) с конца
       3) с сеедины

     попробуйте запрос вида

      select * from tovar where
       ((variant = 1) and (code like :Search_Code || '%')) OR
       ((variant = 2) and (code like '%' || :Search_Code)) OR
       ((variant = 3) and (code like '%' || :Search_Code || '%'))

    и вы поймёте что я имел ввиду ;)
    так это далеко не все параметры :)
    
С уважением,
Константин Григорьевич.
===============


Ответить