"Alexander Goldun" ...
>
> Horsun Vlad пишет:
> > А что в ASA делает препаре ? Выделяет буфер в N MB на всякий случай ?
:)))
>
> Не сильно заморачиваюсь этим вопросом, ибо делаю отдельный prepare
> крайне редко, можно сказать никогда в штатной работе.
Если ты его не делаешь явно - это ещё не значит, что он не
делается вообще
> В документации описано не очень внятно. Есть такой абзац:
>
> Normally, the optimizer selects an access plan for a query every time
> the query is executed. Optimizing at execution time allows the optimizer
> to choose a plan based on current system state, as well as the values of
> current selectivity estimates and estimates based on the values of host
> variables.
Т.е. переоптимизирует при каждом выполнении ? Некузяво это, имхо
А если с явным препаре ?
> А для запросов в процедурах, функциях и триггерах может быть
> использовано кэширование планов, если план, построенный без
> использования host variables близок по стоимости к лучшему плану
> запроса, полученному ранее.
>
>
http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/en/html/dbugen9/00000403.htm
Ну вот:
After a statement in a stored procedure, stored function, or
trigger has been executed several times by one connection, the
optimizer builds a reusable plan for the statement. A reusable
plan does not use the values of host variables for selectivity
estimation or rewrite optimizations. The reusable plan may have
a higher cost because of this
Следует ещё понимать, что в ASA (да и в MSSQL) процедура -
это набор _отдельных_ statement'ов, каждый из которых имеет
свой план выполнения, а у нас - процедура есть один statement
с единым планом выполнения
--
Хорсун Влад