В рабочем поле Sitecore, (Sitecore.Shell.Applications.Workbox)
, в методе DisplayStates(IWorkflow workflow, XmlControl placeholder)
Sitecore использует следующий метод для извлечения элементов в определенном состоянии рабочего процесса.
DataUri[] items = this.GetItems(state, workflow);
В нашей основной базе данных есть около 650 000 элементов, которые нужно запросить. Загрузка Workbox занимает около 1,5 минут. Я посмотрел, что происходит внутри метода this.GetItems (state, workflow), используя dotpeek.
Внутренне он создает следующий запрос, выполнение которого заняло 1,5 минуты в базе данных master (выберите 36 элементов из 650 000+ элементов),
SELECT *
FROM VersionedFields INNER JOIN Items ON VersionedFields.ItemId = Items.Id
WHERE ItemId IN (SELECT ItemId FROM SharedFields WHERE FieldId=Workflowengine field AND Value= workflowengine)
AND FieldId=workflow state AND Value= workflowstate value
ORDER BY Name, Language, Version
Есть ли способ повысить производительность в Workbox?