2012-01-30 62 views
6

执行动态查询时,RavenDB通常会创建一个临时索引。RavenDB是否内部优化“获取文档ID”类型的查询?

检索文档通过其Id不会触发此行为:

var entity = documentSession.Query<Entity>().Single(x => x.Id == 1); 

确实RavenDB具有一个内置的优化这种类型的查询?

+1

var entity = documentSession.Load (1);没有做临时索引,并且速度非常快,我找到了。 – Phil 2012-01-30 11:17:39

回答

4

Arnold, 不,它的确不是而是优化了这种行为。

1

你的假设是错误的,因为它会创建一个临时索引。如果您的示例其名称应该是“Temp/Entities/By__document_id”

+0

Raven Studio没有显示这样的索引。 – 2012-01-30 11:57:44

+0

我刚试过 - 我有这个索引在我的情况。也许你有另一个已经包含Id属性的索引,因此查询优化器将使用这个索引而不是创建一个新的临时索引。但是,当您有一个新的空乌鸦实例时,它将创建一个临时索引。 – 2012-01-30 13:33:30

+0

在我的情况下,它不会创建一个在Raven Studio中可见的临时索引。运行时的索引名称是“Dynamic/Entities” – 2012-01-30 14:06:10