Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>И чем они помогут в случае динамических фильтров и динамических предикатов?
На уровне базы динамические фильтры от нединамических неотличимы. Нет никакого специального синтаксиса для select, который выбирает "динамику".
Движок каждый раз сравнивает запрос с набором индексов, и выбирает оптимальный план. Если движок приличный, то он ещё и учитывает конкретные значения параметров запроса и статистику реальных данных для оценки селективности различных частей предикатов.
EP>Для динамических запросов, с динамическими формулами?
Индексированное представление — один из хороших вариантов сделать "прикладное кэширование", показав базе, какие производные данные мы ожидаем часто видеть в запросах.
И опять: вся мощь оптимизации движка позволяет нам получать высокую производительность независимо от "степени динамичности".
Если я сделал indexed view для select SalesDate, sum(SalesAmount) as TotalAmount from sales group by SalesDate, то я вполне могу скармливать в движок запросы с различными параметрами — типа "покажи мне день с самыми высокими продажами за 2013", или "покажи мне помесячные продажи за 2013/2014" — и всё ещё я буду получать бенефиты от преагрегации и выбора уместных индексов.
То есть я не прибиваю гвоздями один конкретный результат одного конкретного запроса, а ввожу ещё один уровень кэширования, который помогает в широком классе запросов.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.