была процедура использующая следующий запрос
Код: Выделить всё
select tarif_price_month , count(xc_product.product_id), xc_product.product_id
from xc_product inner join xc_tarif on xc_product.product_id = xc_tarif.product_id
where kab = :kab
and product_start <= current_date
and product_stop > current_date
and (product_pause > current_date or product_pause is null)
and tarif_minus = 0
and tarif_arenda = 0
and tarif_percent = 0
group by tarif_price_month , xc_product.product_id
методом "научного тыка" выяснил , что если не использовать функцию current_date, а передавать текущую дату из приложения в качестве входной переменной, то скорость выполнения процедуры увеличивается до 300-400 мс, т.е. почти в 10 раз быстрее!!!
чем вызвано такое поведение?
переписал на
Код: Выделить всё
select tarif_price_month , count(xc_product.product_id), xc_product.product_id
from xc_product inner join xc_tarif on xc_product.product_id = xc_tarif.product_id
where kab = :kab
and product_start <= '11.02.2015'
and product_stop > '11.02.2015'
and (product_pause > '11.02.2015' or product_pause is null)
and tarif_minus = 0
and tarif_arenda = 0
and tarif_percent = 0
group by tarif_price_month , xc_product.product_id