2014-07-13 55 views
1

我正在从事个人WPF项目,我在这里解析大文本,提取段落,句子和单词。对于我解析的每个单词,我发送一个“select”请求到一个480k行/ 10列数据库中,我在SQLite中进行了转换以便于部署。“选择”SQLite请求的性能问题

我的问题是这些请求中的每一个都在全局处理时间上增加了一个很大的延迟(我花费了1,02秒/字的平均值而不是没有选择请求的30ms)。我有一些想法来解决这个问题,并且在我投资更多选项之前,我想征询您的意见:

  • 我可以用我的480k行表填充数据表。我期望它可以提高速度和使用的RAM(在目前的设置中我使用最大值为40Mo)。由于我对数据集/数据表没有经验,我不确定在速度和内存消耗方面是否合适。它会太多吗?
  • 我可以将我的单词插入到同一个数据库中的单独SQLite表中,并使用SQlite功能来连接数据库。没有这方面的经验,我想知道是否有可能创建一个由两个表中的列组成的视图,其中一个(两者共有)用于匹配。我可以在生成的数据库上工作,无论是简单视图还是实际表格

    最后一个问题:我设法通过对插入SQLite的批处理使用单个事务来大幅减少处理时间。我认为这是不可能的“SELECT”请求。然而,我会欢迎一个惊人的技术来实现这一目标:-)

+0

有个问题,你为什么需要做select?你想显示它吗?您可以通过混合数据虚拟化延迟加载来提高性能吗? – whoisthis

+0

解析任务旨在创建与我从480k行表中获得的几个属性相关联的每个单词的记录。现在,这条记录保存为一个结构列表,我将原始数据和通过select请求获得的数据进行合并。一旦这个记录完成后,我会用它来创建和显示图表和图形来总结它。要回答你的问题,我不直接显示它。 – Billybobbonnet

回答

0

我以一种满意的方式(至少对我来说)解决了这个问题。我使用了数据表选项。 RAM消耗已经跃升至230Mo,但我认为它可以在重串分析的情况下容忍。

正如预期的那样,它快900倍左右。