Re[44]: EntityFramework - тормоз
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 20.04.15 10:40
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Здравствуйте, Sinclair, Вы писали:


EP>>>И чем они помогут в случае динамических фильтров и динамических предикатов?

S>>На уровне базы динамические фильтры от нединамических неотличимы. Нет никакого специального синтаксиса для select, который выбирает "динамику".
S>>Движок каждый раз сравнивает запрос с набором индексов, и выбирает оптимальный план. Если движок приличный, то он ещё и учитывает конкретные значения параметров запроса и статистику реальных данных для оценки селективности различных частей предикатов.

EP>Здесь под динамическими фильтрами и предикатами — подразумеваются выражения неизвестные во время сборки приложения. Их "специальность" в том, что для них нельзя построить индексы заранее, а не в том что у них какой-то особенный синтаксис.


Ты предполагаешь, что любой запрос равновероятен? Тогда чем поможет кеш? А если не равновероятен, то в чем проблема построить индексы?


EP>>>Для динамических запросов, с динамическими формулами?

S>>Индексированное представление — один из хороших вариантов сделать "прикладное кэширование", показав базе, какие производные данные мы ожидаем часто видеть в запросах.

EP>Как создать индекс для динамических формул?

Нету в SQL динамических формул, они все для СУБД одинаковые. Но в реальной жизни окажется, что одни предикаты встречаются чаще других. Например для таблиц с историей данных чаще будут встречаться предикаты с датой, чем с любым другим полем и нам ничего не помешает сделать индекс по дате, который ускорит львиную долю запросов. А если часто встречаются агрегаты по определенным полям, то мы можем сделать индексированное представление, которое ускорит нам запросы.

S>>И опять: вся мощь оптимизации движка позволяет нам получать высокую производительность независимо от "степени динамичности".

EP>Не будет никакой высокой производительности для выражений задающихся извне.
Опять таки если считать что все запросы равновероятны. Но тогда и кеши не помогут (вообще никакие).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.