Рубан Станислав wrote:

Сервер может хранить историю выполнения запросов при смене плана (план, время выполнения и т.д.), при следующем вызове анализируется ИСТОРИЯ и выбирается план, который приводил к лучшему результату.

Я бы таки предпочёл, чтоб сервер занимался делом, а не хранил истории всех запросов и не копался бы в этом окаменевшем дерьме, что гарантированно приведёт к выполнению select 1 from rdb$database за минуту после пары лет эксплуатации базы.

при разработке БД не всегда можно предположить, где именно и когда оптимизатор выберет не оптимальный план. Это происходит уже у клиента, которому ты "ничем не обязан". Писать руками план в каждый запрос - это тоже не выход.

Собсно, лет эдак 7, до появления FB1.5, за непланированный руками запрос у меня кодер не так чтоб сразу отдавал 10% зарплаты, но пиво точно ставил. На первый раз. В последнее время от практики использования секции Plan почти отошли, но на автомате пишем +0 в условиях джойна, оставляя судьбе совсем уж небольшой шанс - использовать все нужные индексы, но порядок объединения выставить через жопу. Тем не менее, она, судьба, регулярно этот шанс использует. И тогда таки пишем волшебное слово Plan. И ничего, живы...

--
Regards. Ded.

Ответить