我在Sitecore项目中使用以下代码:
Item item = database.GetItem(new ID("{id is here}"));
第一次检索此项目需要70多秒。第二个电话和所有其他电话工作得更快。 是否有可能提高第一次通话的效果?
答案 0 :(得分:0)
我可以提出的假设是归咎于初始项目的预取(\App_Config\Prefetch
中的配置)。所有条件都组合成一个巨型SQL查询,在大型数据库上可能变成full table scan。
自query has server-side sorting起,它必须像处理您的情况一样,需要花费大量时间来处理庞大的数据集。 Initial prefetch
锁定数据库操作,以便所有其他操作都必须等待它完成。
缓存清理操作对初始预取标志没有影响,因此,每次数据库运行时,它只执行一次。
尽管如此,只有通过检查performance profile才能得出准确的结论。