Sitecoreのワークボックスで(Sitecore.Shell.Applications.Workbox)
、DisplayStates(IWorkflow workflow, XmlControl placeholder)
のメソッドでは、Sitecoreは次の方法を使用して特定のワークフロー状態のアイテムを取得します。Sitecoreワークボックスのパフォーマンスの問題を解決する
DataUri[] items = this.GetItems(state, workflow);
私たちのmasterデータベースには、問い合わせる650,000アイテムがあります。 ワークボックスをロードするのに1分の時間がかかります。私はdotpeekを使って "this.GetItems(状態、ワークフロー)"メソッドの内部で何が起こるかを見ていました。
内部的には、仕事箱でのパフォーマンスを改善する方法はあり、(650,000+項目から36の項目を選択)マスター・データベースで実行する
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
を1½分かかった次のクエリを構築しますか?
フィールドItemIDのSQLテーブルにインデックスを追加できます(まだ存在していない場合)。それは物事をスピードアップするかもしれない。 –
+1よく研究された質問。 –