我的Db4o数据库中有7000个对象。Db4o选择性能
当我检索所有这几乎是瞬间的对象.. ,当我加入其中限制,即名称=“克里斯”,就需要6-8秒。
发生了什么事?
另外我见过有关使用Lucene进行搜索类型查询的一些评论有没有人有任何好的链接呢?
我的Db4o数据库中有7000个对象。Db4o选择性能
当我检索所有这几乎是瞬间的对象.. ,当我加入其中限制,即名称=“克里斯”,就需要6-8秒。
发生了什么事?
另外我见过有关使用Lucene进行搜索类型查询的一些评论有没有人有任何好的链接呢?
有两件事要检查。
已设置索引on the field它代表名称? A股指数应该使查询速度快了很多 指数:
cfg.Common.ObjectClass(typeof(YourObject)).ObjectField("fieldName").Indexed(true);
这个问题是有点老了,但也许这是什么用途:
当使用原生查询,尝试设置一个断点lambda表达式。如果断点实际被调用,则由于优化失败而遇到麻烦。要调用lambda,每个对象都必须实例化,这非常昂贵。
如果优化工作,将分析lambda表达式树并且不需要实际的代码,因此不会触发断点。
另请注意,必须在打开连接前执行字段上的设置索引。
最后,我有一个简单对象的测试用例。当我开始时没有查询优化和索引(更糟糕的是,使用服务器因为我未能提供模型.dll而被迫使用GenericReflector
),对于大约100,000个对象的三个条件查询,它也是600秒。现在,对于2.5M对象的相同查询需要6s,所以确实有很大的收益。
fyi这发生在使用本机查询 – 2010-02-07 12:03:43