删除数据文件夹后,我刚刚启动了一个新的RavenDB服务器。所以,我有一个空的数据库。我在 LinqPad 中运行了此查询。第一次用了19秒,第二次用了13秒。为什么在空数据库上需要这么长时间?
Session.Query<PerformanceMetric>()
.Where(x => x.CreatedTime > new DateTime(2012, 4, 17, 15, 00, 00))
.OrderBy(x => x.ObjectType)
.OrderBy(x => x.CreatedTime)
.Take(1000)
.ToList().Dump();
注意:我第三次和第四次运行查询时,只花了0.02秒。是建立索引还是什么?
我最好的猜测是构建索引所花费的时间。当你没有提前创建索引时,RavenDB 仍然会让你查询随机的东西,它只会为你创建一个索引,如果你使用它足够多,它会保留它。
尝试提前创建索引,看看它将如何工作。
更多信息可以在这里获得:http://ayende.com/blog/4667/ravens-dynamic-queries
需要一段时间的原因是我们需要为要运行的查询创建一个索引(如果还没有索引)。即使没有文档,我们仍然需要做一些工作来准备它。特别是,编制索引通常是最昂贵的部分。