我创建了一个简单的基于RavenDB的应用程序,其中有3000个文档,包含15个字符串和int属性。其中一个属性(CType)对所有文档具有相同的值,我使用此字段作为使用Lucene查询将所有文档加载到数组中的方法:
var store = new DocumentStore { Url = "http://localhost:8080", DefaultDatabase = "GIS" };
store.Initialize();
using (var session = store.OpenSession())
{
var school = session.Advanced.LuceneQuery<School>()
.Where("CType:School") // all documents have CType = "School"
.Take(5000)
.ToArray();
此代码的作用是它会将所有3000个文档读入数组,但完成加载需要5秒或更长时间。
有没有办法更快地完成这项工作?
答案 0 :(得分:3)
好吧,您正在执行一个必须获取5000个项目的查询,通过网络发送它们并将它们从Json反序列化为学校POCO。对于所有这些,每秒1000件物品并不是那么糟糕。
话虽如此,你回来的学校项目清单会怎样?一般来说,你不需要一次性使用5000个项目,这就是为什么RavenDB有paging built-in
答案 1 :(得分:1)
您实际上是使用动态索引来执行此操作,因此第一次使用动态索引获取它时很可能。 你应该考虑在服务器上进行任何过滤,而不是在客户端进行过滤。