2012-03-26 44 views
0

我目前正在使用嵌入式sqlite存储相对较大的数据列表(从每个表100'000行开始)。查询只包括:sqlite替代巨大的数据列表?

  • 寻呼
  • 排序由现场

金额数据的一列相对较小。性能非常糟糕,特别是对于第一个查询,这对我的应用程序至关重要。各种调音和预缓存已经尝试并达到了实际的极限。

是否有任何替代嵌入式数据存储库,可以以非常快速和有效的方式做这些简单的查询? Theres没有要求它支持SQL。

+0

您是否尝试过分裂您的表?处理它们可能会变得笨重,但在某些情况下它可以工作,并且如果它确实提供了改进的性能,则存在危险。 – halfer 2012-03-26 10:40:59

+0

是的,实际上他们分裂他们最小行数从数百万到数十万,这仍然是非常缓慢:( – 2012-03-26 10:46:52

+0

我想创建一个鬼桌只包含大集只有“头”,所以我可以但是这只是在sqlite上建立了另一个解决方法:( – 2012-03-26 10:48:14

回答

0

如果是(主要是)只读,请考虑使用文件的内存映射视图。

这将有可能实现最大的性能滚动你自己的指标。

很明显,它也是工作量最大,容易出错的问题。

我可以推荐一个传统的RDBMS,它具有良好的索引或者可能是一个支持您的工作负载的新颖的无SQL样式的数据库?

+0

数据正在发生变化,但速度很慢但很常见:(像MySQL这样的传统SQL服务器将非常适合,但是这超出了嵌入式应用程序的范围,并会导致很多额外的部署问题:(我应该看看这些nosql dbs ,谢谢。 – 2012-03-26 10:44:41

0

你可以尝试lucene.net,它速度快,不需要任何安装,支持按字段分页和排序等等。 http://incubator.apache.org/lucene.net/

用简单的Lucene的包装,也很容易使用:http://blogs.planetcloud.co.uk/mygreatdiscovery/post/SimpleLucene-e28093-Lucenenet-made-easy.aspx

+0

+1我应该尝试Lucene这些天之一 – sehe 2012-03-26 10:40:41

+0

Lucene不能很好地处理到100万列表的最后一页,很好,它的主要用途是全文搜索我很害怕 – 2012-03-26 10:41:05

+0

它的索引被实现应该允许它在一般情况下比RDBMS更快地分页结果,是的,它用于全文搜索,但是这并不妨碍将它用作持久层(如果你有数百万行,很确定搜索应该为你手忙脚乱:)。 – Giedrius 2012-03-26 10:47:02