Частично места где Yaffil молотит быстрее уже нашел.
Есть простой запрос (таблица smoves - 3 млн. записей):
select k.id_knames, sum(sm_quant)
from smoves s, knames k
where
s.id_knames=k.id_knames and s.id_sklnames=1
and k.nm_folder=0 and s.sm_date<:ost_date
and k.nm_id_knames=1
and k.nm_parent=1660
group by k.id_knames
having sum(sm_quant)>0
на Yaffil отрабатывает всреднем 26 секунд
PLAN SORT (JOIN (K INDEX (KNAMES_IDX2),S INDEX
(SMOVES_IDX_SK_NM,SMOVES_IDX1)))
на Firebird-2.0.3.12981 отрабатывает всреднем 140секунд
PLAN JOIN (K ORDER KNAMES_IDX1 INDEX (KNAMES_IDX2), S INDEX
(SMOVES_IDX_SK_NM, SMOVES_IDX1))
НО! индекс SMOVES_IDX1 по полю s.sm_date нерезультативен, поскольку
дата берется либо последняя либо близка к ней,
и если заставить оба сервера не использовать его, заменив
and k.nm_folder=0 and s.sm_date<:ost_date
на
and k.nm_folder=0 and coalesce(s.sm_date, cast('now' as
date))<:ost_date
то ситуация резко меняется - птица отрабатывает за 63мс а дятел за
110мс!
тоесть у меня предположение что дятел быстрее молотит нерезультативные
индексы,
уже нашел несколько таких мест в своей БД. Прийдется поборотся с
пережитками прошлого ;)