在RavenDB网站上,当您知道文档ID时,它会显示“使用加载查询”。在我对大约1,500个对象的简单集合的测试中,Load总是较慢。为什么呢?
负载:
var doc = session.Load<Document>("Documents/123");
查询
var doc = session.Query<Document>().Where(x => x.Id == "123").SingleOrDefault();
在测试中,检索每个文档,平均查询时间为66毫秒,而负载为137。 RavenDB实例位于另一个办公室,因此时间很长。无论加载不总是更快?
修改
这是我所说的http://ravendb.net/kb/31/my-10-tips-and-tricks-with-ravendb的陈述。提示#4。这是错的吗?
答案 0 :(得分:5)
根据我的理解,Load将保证返回结果(假设数据库中存在id),而如果索引尚未更新,Query可能不会返回结果。
你可以有一个场景,你插入一个记录,然后在下一行尝试使用Query检索相同的记录,然后没有得到任何回报。在这种情况下,Load将返回一条记录。
所以我猜你看到的性能下降可能与你在使用Query时通过索引查询这一事实有关,而Load正在点击实际的数据存储。
答案 1 :(得分:4)