Horsun Vlad пишет:

Не сильно заморачиваюсь этим вопросом, ибо делаю отдельный prepare
крайне редко, можно сказать никогда в штатной работе.

    Если ты его не делаешь явно - это ещё не значит, что он не
делается вообще

Разумеется, оно делается сервером.

 Т.е. переоптимизирует при каждом выполнении ? Некузяво это, имхо

Ну, смотря что с чем сравнивать. За то отсутствует понятие "плохого индекса", можно смело делать индексы на поля типа статусов, как описано в начальном посте. Мною визульно накладные расходы на оптимизацию на большинстве задач не обнаружены.

А если с явным препаре ?

Вот что есть в доке про preparing:
http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/en/html/dbpgen9/00000020.htm
Пишут, что generate an access plan if the statement involves joins or subqueries. Что за этим скрывается на самом деле - не знаю. Но похоже на запросах с параметрами без явного prepare план строится в зависимости от значений параметров.

    Следует ещё понимать, что в ASA (да и в MSSQL) процедура -
это набор _отдельных_ statement'ов, каждый из которых имеет
свой план выполнения, а у нас - процедура есть один statement
с единым планом выполнения

Можно подробнее эту мысль? Что значит план для процедуры, в которой внутри куча разных, возможно несвязанных между собой запросов?

Ответить