Hello, DmitryLe!

DmitryLe wrote:

Это я обкурился или кто-то другой?

ты.

По полю parentindex есть индекс

select * from commoditytree
where parentindex
like '0%'
План
PLAN (COMMODITYTREE INDEX (COMMODITYTREE_IDX1))

оптимизатор видит, что поиск будет по началу
строки, и подцепляет индекс.

select * from commoditytree
where parentindex
like ?P

План
PLAN (COMMODITYTREE NATURAL)

оптимизатор видит, что поиск будет хрен знает по чем,
выбирает натуральный перебор.

select * from commoditytree
where parentindex
like '0'||'%'

то же самое. здесь конкатенация, т.е. фукнкция. Аналог field+0 и так
далее.

сначала идет анализ запроса, потом формирование плана, а потом
выполнение запроса. Т.е. в случае :p и конкатенации сервер на
этапе анализа запроса НЕ МОЖЕТ понять что там будет.
То есть, после prepare план уже изменить, переоценить и т.п
невозможно.

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34


Ответить