Optimization 如何优化sitecore查询?

Optimization 如何优化sitecore查询?,optimization,sitecore,sitecore7,sitecore7.2,Optimization,Sitecore,Sitecore7,Sitecore7.2,嗨,我知道很可能有人问过这个问题。如何提高Sitecore查询的查询性能。我已经安装了dotTrancer,并得到了您可以在图片中看到的结果。我的方法与我没有显示在图像中的toked 2551毫秒和Sitecore查询toked 2344毫秒,这是巨大的。 我使用的是Sitecore 7.2,我想他们的数据库中大约有10000条条目记录。我们没有超过5个版本的每个项目。我们所做的查询是: 返回rootItem.Axes.SelectSingleItem(string.Format(“后代::*[

嗨,我知道很可能有人问过这个问题。如何提高Sitecore查询的查询性能。我已经安装了dotTrancer,并得到了您可以在图片中看到的结果。我的方法与我没有显示在图像中的toked 2551毫秒和Sitecore查询toked 2344毫秒,这是巨大的。 我使用的是Sitecore 7.2,我想他们的数据库中大约有10000条条目记录。我们没有超过5个版本的每个项目。我们所做的查询是:

返回rootItem.Axes.SelectSingleItem(string.Format(“后代::*[@{0}='{1}']”,attributeName,attributeValue));
attributeName=TemplateName


您知道如何优化请求吗?

不要使用Sitecore API进行搜索。使用Sitecore搜索:

public void搜索(Item rootItem,string templateName)
{
var index=ContentSearchManager.GetIndex(“sitecore_”+sitecore.Context.Database.Name+“_index”);
使用(var context=index.CreateSearchContext())
{
var result=context.GetQueryable().FirstOrDefault(i=>i.TemplateName==TemplateName&&i.Paths.Contains(rootItem.ID));
如果(结果!=null)
{
Item resultItem=result.GetItem();
}
}
}

不要使用Sitecore API进行搜索。使用Sitecore搜索:

public void搜索(Item rootItem,string templateName)
{
var index=ContentSearchManager.GetIndex(“sitecore_”+sitecore.Context.Database.Name+“_index”);
使用(var context=index.CreateSearchContext())
{
var result=context.GetQueryable().FirstOrDefault(i=>i.TemplateName==TemplateName&&i.Paths.Contains(rootItem.ID));
如果(结果!=null)
{
Item resultItem=result.GetItem();
}
}
}

@MarekMusilak,谢谢你的回答。我不知道为什么有时候当我做第一个查询时,它会工作,而当我做你的版本不工作时。我正在重建索引,也许这就是问题所在。当然,索引必须是rebuilt@MareMusielak我已经重建了索引,并在代码中做了一些更改,一切正常。我确实有一个问题,上面的查询是否也适用于rootItem.Axes.SelectSingleItem(string.Format(“祖先:*[@{0}='{1}']”,fieldName,fieldValue))?是的。您可以使用任何字段。您需要创建自己的类继承自
SearchResultItem
,并向其中添加其他属性。检查我在考虑使用类似fast:/genderant::的东西,对吗?@MarekMusilak,谢谢你的回答。我不知道为什么有时候当我做第一个查询时,它会工作,而当我做你的版本不工作时。我正在重建索引,也许这就是问题所在。当然,索引必须是rebuilt@MareMusielak我已经重建了索引,并在代码中做了一些更改,一切正常。我确实有一个问题,上面的查询是否也适用于rootItem.Axes.SelectSingleItem(string.Format(“祖先:*[@{0}='{1}']”,fieldName,fieldValue))?是的。您可以使用任何字段。您需要创建自己的类继承自
SearchResultItem
,并向其中添加其他属性。检查我正在考虑使用类似fast:/genderant::的东西,对吗?