Показать сообщение отдельно
Старый 02.10.2018, 13:13   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,875 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Post Кеширование вьюх. (Свойство CacheLookup для View)
Добрый день всем.

Коллеги, возможно ли штатно в аксапте (речь о 2012-й) кешировать вьюхи ?

В целом в 2012-й версии кеширование очень продвинутое - вплоть до кеширования джоинов. Также поддерживается кеширование по любому уникальному ключу, что очень удобно.
https://docs.microsoft.com/en-us/dyn...record-caching

Про вьюхи в документации сказано как-то расплывчато.
https://docs.microsoft.com/en-us/pre...869223(v=ax.60)

Явно указано
Цитата:
The properties that can be set for a View are listed below.
...
CacheLookup Retrieves the record cache level for the table.
т.е. запрета вроде как нет.

Но явно не описано как можно было бы использовать кеширование. Кроме того в свойствах вьюхи поле CacheLookup задизейблено. Т.е. получается, что нельзя.

Как-то это нелогично.
Вьюхи используются практически везде. Строятся зачастую по Query, который является джоином табличек по уникальным ключам.
При таком условии если мы делаем запрос через Query - то кеш отрабатывает. А если используем View основанный на Query - то нет. Т.е. увеличивается нагрузка на базу.

Я попробовал хакнуть вьюху. Выгрузил в xpo задал в xpo свойства
X++:
      CacheLookup         #Found
      CreateRecIdIndex    #Yes
импортнул обратно.


Кеширование по RecId заработало !

Интересно, что при импорте утилита сравнения не показала никаких отличий. Т.е. она не учитывала эти свойства. Также если не выставить
Цитата:
CreateRecIdIndex #Yes
то тоже кеширование не работает.

Другие индексы прописать невозможно, что в общем неудивительно, так как во вьюхе могут быть свои поля, которые называются совсем не так, как поля в индексе таблички.

Странно, все же почему во вьюхах штатно кеширования нет. Реально то движок есть и для RecId даже можно заставить его работать. Т.е. можно было бы в интерфейс привинтить возможность указания ключа кеширования (например как в RecordSortedList можно задавать ключа хранения / поиска). Было бы удобно.


А как в D365 c этим обстоят дела ?