{SKIP}

 К>>     ИМХО, только !изменение! (что-то сродни prepeare)
 К>>     структыры where по значению парамета - было-бы очень
 К>>     полезно многим ....

AK> проще надо писать код, проще.
AK> :)

 Хорошо, простайшая задача поиск товара по вхождению :)
 с разными условиями скажем:
  1. точное совпадение   (тип поиска 1)
  2. с начала            (2)
  3. с любой частью поля (3)

 Задать на стороне клиента с макросами в FIBPlus НИЗЯ,
 скажем запросик находится внутри SP в которой ещё
 ищется цена товара, наличие на складе и прочяя :)

 for select id, name from tovar
  where ((:typesearch = 1) and (name = :searchstr))
     or ((:typesearch = 2) and (name like :searchstr || '%'))
     or ((:typesearch = 3) and (name like '%' || :searchstr || '%'))
 do ....
 
  вроде элементарно, оптимизатор правда пишет:
    PLAN (TOVAR T INDEX (TOVAR_NAME))

  НО !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  Я думаю ты будешь удивлён ;)

  Приведу пример:
  
=========================================================
 select id, code from tovar
  where ((:t = 1) and (code = :str))
     or ((:t = 2) and (code != :str))

План
PLAN (TOVAR T INDEX (TOVAR_CODE))

Адаптированный план
PLAN (TOVAR T INDEX (TOVAR_CODE))

------ Performance info ------
Prepare time = 0ms
Execute time = 621ms
Avg fetch time = 621,00 ms
Current memory = 758═520
Max memory = 786═224
Memory buffers = 2═048
Reads from disk to cache = 2═126
Writes from cache to disk = 0
Fetches from cache = 404═825
=========================================================

 select id, code from tovar
  where ((:t = 1) and (code = :str))

План
PLAN (TOVAR T INDEX (TOVAR_CODE))

Адаптированный план
PLAN (TOVAR T INDEX (TOVAR_CODE))

------ Performance info ------
Prepare time = 0ms
Execute time = 10ms
Avg fetch time = 10,00 ms
Current memory = 662═452
Max memory = 786═224
Memory buffers = 2═048
Reads from disk to cache = 2
Writes from cache to disk = 0
Fetches from cache = 14
=========================================================

  Так что есть смысл ? так это на манюсенькой таблице ...
  А если туда ещё какой-то JOIN залепить ? прошу обратить
  внимание на к-во Fetches ...

С уважением,
Константин Григорьевич.
===============
Если "низя", но очень "хотса" - то "мона" :)


Ответить