使用空DB的RavenDB慢速查询

时间:2012-04-17 19:09:04

标签: performance ravendb linqpad

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

2 个答案:

答案 0 :(得分:3)

我最好的猜测是建立索引的时间。当你没有提前创建索引时,RavenDB会让你仍然查询随机的东西,它只会为你创建一个索引,如果你使用它足够的话,它会保留它。

尝试提前创建索引,并了解它的工作原理。

可以在此处获取更多信息:http://ayende.com/blog/4667/ravens-dynamic-queries

答案 1 :(得分:3)

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