我正在尝试在执行给定查询时打印查询统计信息。特别是我对服务器上的执行时间感兴趣,以毫秒为单位属性。以下是我的参考代码
void Main()
{
var documentStore = DocumentStoreHolder.Store;
Load_Stats(documentStore);
}
// Define other methods and classes here
public static void Load_Stats(IDocumentStore documentStore)
{
using (var session = documentStore.OpenSession())
{
RavenQueryStatistics stats;
IRavenQueryable<Order> recentOrdersQuery = from order in session.Query<Order>().Statistics(out stats) where order.Company=="companies/1" select order;
List<Order> recentOrders = recentOrdersQuery.Take(3).ToList();
Console.WriteLine("Index used was: " + stats.IndexName);
Console.WriteLine($"Other stats : 1. Execution time on the server : {stats.DurationMilliseconds} 2.Total number of results {stats.TotalResults} 3. The last document ETag {stats.ResultEtag} 4. The timestamp of last document indexed by the index {stats.IndexTimestamp}");
}
但是在重复执行此查询后,我会花时间在服务器上以毫秒为单位运行查询。我不明白为什么会这样。我应该将结果分配给长变量还是允许打印结果(stats.DurationMilliseconds)。 TIA
答案 0 :(得分:1)
最可能的原因是,这是因为RavenDB能够从客户端缓存提供请求,而不是去服务器