首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Db4o精选性能

Db4o精选性能
EN

Stack Overflow用户
提问于 2010-02-07 15:52:01
回答 2查看 988关注 0票数 2

我的Db4o数据库中有7000个对象。

当我检索到所有的对象时,它几乎是瞬间的。当我添加一个where constrain ie Name = "Chris“时,需要6-8秒。

到底怎么回事?

我还看到了一些关于使用Lucene进行搜索类型查询的评论,有没有人有好的链接?

EN

回答 2

Stack Overflow用户

发布于 2010-02-09 05:44:44

有两件事需要检查。

  1. 你是否添加了‘DB4objects.DB4o.NativeQueries’-程序集?如果没有此程序集,则为native query cannot be optimized
  2. 设置了代表名称的索引on the field吗?索引应该会使查询更快,Index:cfg.Common.ObjectClass(typeof(YourObject)).ObjectField("fieldName").Indexed(true);
票数 2
EN

Stack Overflow用户

发布于 2010-02-24 09:00:11

这个问题有点老生常谈了,但也许这是有用的:

在使用原生查询时,请尝试在lambda表达式上设置断点。如果实际调用了断点,那么您就有麻烦了,因为优化失败了。要调用lambda,必须实例化每个对象,这是非常昂贵的。

如果优化有效,将分析lambda表达式树,并且不需要实际代码,因此不会触发断点。

另请注意,必须在打开连接之前对字段执行设置索引。

最后,我有一个简单对象的测试用例。当我开始没有查询优化和索引(更糟糕的是,使用的服务器因为我无法提供模型.dlls而被迫使用GenericReflector )时,对于大约100,000个对象的三条件查询来说,时间太短了。现在,在250万个对象上进行相同的查询需要6秒,所以这真的是一个巨大的收益。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2216333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档