2015-11-06 82 views
1

嗨,我知道最有可能這個查詢被問到。如何提高Sitecore查詢的查詢性能?我已經安裝了dotTrancer並獲得了可以在this圖片中看到的結果。我的方法與我沒有顯示在圖像中需要2,551毫秒和Sitecore查詢叉2,344毫秒這是巨大的。 我正在使用Sitecore 7.2,我認爲他們的數據庫中有大約10K條記錄。我們沒有更多的每個項目5版本。我們要做的查詢是:如何優化sitecore查詢?

return rootItem.Axes.SelectSingleItem(string.Format("descendant::*[@@{0}='{1}']", attributeName, attributeValue)); 

attributeName = TemplateName。

你有什麼想法可以優化請求嗎?

回答

4

請勿使用Sitecore API進行搜索。使用Sitecore搜索:

public void Search(Item rootItem, string templateName) 
{ 
    var index = ContentSearchManager.GetIndex("sitecore_" + Sitecore.Context.Database.Name + "_index"); 
    using (var context = index.CreateSearchContext()) 
    { 
     var result = context.GetQueryable<SearchResultItem>().FirstOrDefault(i => i.TemplateName == templateName && i.Paths.Contains(rootItem.ID)); 
     if (result != null) 
     { 
      Item resultItem = result.GetItem(); 
     } 
    } 
} 
+0

@MarekMusilak,謝謝你的回答。我不知道爲什麼有時候,當我做第一個查詢時,它的工作原理以及當我做你的版本不起作用。我正在重建索引,可能這是問題所在。 – Radu

+0

當然,索引必須重建 –

+0

@MareMusielak我已經重建了索引,並在代碼中更改了所有工作正常。我有一個問題,上面的查詢也適用於類似rootItem.Axes.SelectSingleItem(string.Format(「ancestor :: * [@ {0} ='{1}']」,fieldName,fieldValue))? – Radu