Вторая попытка отправить читаемый ответ :)
Horsun Vlad пишет: > Ну, это же явный маразм. Про маразм - это сгоряча. IMHO маразм - это использование единого плана для всех возможных значений параметров.(И понятие "плохой индекс" мне тоже кажется достаточно маразматичным). Упрощенный, но жизненный пример - отбор документов, скажем по периоду, складу и статусу. Есть индекс по дате, FK по складу, индекс по статусу. Дата более-менее равномерна, склады заметно отличаются объемом потока документов, а распределение по статусу вообще супер перекошенное - 99% закрыты и очень небольшое кол-во "в обработке". Какой индекс оптимальнее будет? > Берём процедуру типа ... > ты хочешь сказать, что каждое выполнение внутреннего select'а > будет оптимизтроваться заново ? Для процедур, функций и триггеров сделано "интеллектуальное" кэширование планов: http://www.ianywhere.com/developer/product_manuals/sqlanywhere/0902/en/html/dbugen9/00000403.htm Вкраце смысл: после нескольких выполнений оператора строится reusable план. Он не зависит от значений переменных. Если стоимость такого плана близка к лучшей зафиксированной стоимости запроса, то план добавляется в кэш и используется в дальнейшем. В противном случае затраты на оптимизацию на каждом исполнении перевешиваются выгодами от оптимизации и принимается решение не кэшировать, а оптимизировать каждый раз. Запросы с сохраненными в кэше планами периодически переоптимизируются для проверки относительной эффективности сохраненного плана. > Нафиг-нафиг такой 'оптимизатор' Никто ж не заставляет :) Просто упомянул к сведению. P.S. Гистограммы в FB планируются? В roadmap упоминается со средним приоритетом Optimizer improvements ... more data statistics --~--~---------~--~----~------------~-------~--~----~ -~----------~----~----~----~------~----~------~--~---

