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 || '%'))
и вы поймёте что я имел ввиду ;)
так это далеко не все параметры :)
С уважением,
Константин Григорьевич.
===============