iPhone SDK中SQLite查询4万条记录的性能问题

3

如何最好地完成这个任务:

我有一个包含40k+记录(电视节目标题)的sqlite巨型表,我希望能够实时查询这个表。例如,如果用户搜索某个节目,当用户输入搜索词汇时,我会在每次按键之后读取sqlite并过滤记录(就像谷歌搜索建议一样)。

我的性能基准是100毫秒。我已经考虑了一些方案,例如创建索引,将数据分成多个表等。

然而,我真的很感激任何可以让我以最快的速度完成任务的建议,这样我就可以避免UI刷新延迟 - 从那些已经做过类似事情的程序员那里得到反馈是非常棒的。

4个回答

5

需要做的事情:

  1. 适当地索引字段。
  2. 在初始查询中仅限制自己处理10-15条记录,这应该足以填充表视图的顶部。
  3. 如果不需要排序,则不要排序。如果需要排序,则根据索引字段进行排序。
  4. 尽可能多地使用SQLite而不是您自己的代码。
  5. 总体上尽可能少做。

您可能会发现:只要不做任何非常愚蠢的事情,SQLite和iPhone实际上都非常有能力。


2

记住“感知性能”——在按下键后立即进行查找可能会有一定的开销。但是,用户按下键需要多少毫秒呢?您可以等到用户几百毫秒内没有输入任何内容时再更新结果列表,这样就可以避免频繁更新。对于非常快速的用户,也许可以在他仍在输入时每隔X百毫秒更新一次。


1

你怎么知道性能会很差?即使对于 iPhone,4 万行也不算太多……在优化之前先在手机上试一下。


0
避免进行任何连接操作,尝试使用分页以使返回的数据量最小化。也许您应该尝试将整个内容加载到内存中,然后进行排序和二进制搜索?如果只是一个节目标题列表,这种方法会很适合。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接