2

删除数据文件夹后,我刚刚启动了一个新的 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 秒。是建立索引还是什么?

4

2 回答 2

3

我最好的猜测是构建索引所花费的时间。当你不提前创建索引时,RavenDB 会让你仍然查询随机的东西,它只会为你创建一个索引,如果你使用得足够多,它会一直保留它。

尝试提前创建索引,看看它是如何工作的。

更多信息可以在这里获得:http: //ayende.com/blog/4667/ravens-dynamic-queries

于 2012-04-17T20:42:33.610 回答
3

需要一段时间的原因是我们需要创建一个索引来运行查询,如果还没有的话。即使没有文档,我们仍然需要做一些准备工作。特别是,编译索引通常是最昂贵的部分。

于 2012-04-18T01:09:05.287 回答