存储大量html内容的有效方法

时间:2012-08-08 11:23:35

标签: android sqlite large-data

我有一个数据库,其中有一个表格,其中包含“标题,专辑,艺术家......”等字段,并且每个记录(最多30个)还有许多带html内容的字段。

问题是,由于html内容,该数据库有数万条记录并且数百兆字节。由于sqlite文件的大小,搜索速度非常慢(在事务中插入新元素非常慢~200个新行的10-30秒)。第一个LIKE查询可能需要10-15秒,其他搜索足够快(创建索引并且工作正常)。当我从数据库中删除html内容时,搜索始终是即时的。

所以问题是,存储其他html内容的最佳方法是什么?现在我使用选项将它存储在单独的文件中,但它可以在将来生成多达600k的文件和更多文件,创建起来很慢。将文件存储在zip存档中可能会达到其文件编号限制。其他选项是每个表行压缩文件,将html存储在同一数据库中的单独表中,或者为html内容创建单独的数据库文件。

什么能给我带来最佳表现?还是有其他更好的选择吗?我需要快速插入,更新和搜索。

2 个答案:

答案 0 :(得分:0)

您可以考虑做几件不同的事情:

  • 将数据拆分为单独的表。然后,您可以在表之间进行1:1映射,并且只在必要时加入它们,从而加快查询速度。
  • 检查索引。仅仅因为你拥有它们而你认为它们正在工作,并不意味着它们是。如果我没记错的话,sqlite每个查询最多只能使用一个索引,所以你需要确保为你正在使用的查询提供最好的索引。 ANALYZE命令可以帮助解决这个问题。

答案 1 :(得分:0)

经过几天的实验,我得出了这个结论:

  • 一个包含一个表的数据库文件是最慢的(最多10秒)
  • 一个带有两个表的数据库在最差情况下的速度是一个表
  • 的两倍
  • 最快的是拥有两个独立的数据库文件。一个包含搜索所需的数据,另一个包含巨大的html数据。这在最坏的情况下几乎是即时的~300毫秒,在正常使用情况下它是即时的

所以我建议在这种情况下使用两个单独的数据库文件。如果有人没有提供更快/更好的解决方案,我会接受这个作为答案。