iphone sdk sqlite查找性能为+ 40k记录

时间:2009-03-26 10:22:53

标签: iphone database performance sqlite

嘿伙计们,我想知道完成这件事的最佳方法:

我有一个巨大的表,在sqlite中有+ 40k记录(电视节目标题),我想对这个表进行实时查找。例如,如果用户搜索节目,当用户输入搜索词时,我会在每次击键后读取sqlite并过滤记录(如谷歌搜索建议)

我的性能基准是100毫秒。我想到的一些事情是:创建索引,将数据拆分成多个表。

然而,我真的很感激任何建议,以尽可能快的时间实现这一点,所以我可以避免任何ui刷新延迟 - 从已经做过类似的编码器获得反馈将是很棒的

提前致谢

4 个答案:

答案 0 :(得分:5)

要做的事情:

  1. 适当的索引字段。
  2. 在初始查询中仅限于10-15条记录 - 这应该足以填充表格视图的顶部。
  3. 如果您不需要排序,请不要。如果确实需要排序,请对索引字段进行排序。
  4. 尽可能多地使用SQLite而不是自己的代码。
  5. 尽量少做。
  6. 你可能会发现我所拥有的东西:只要你不做任何真正愚蠢的事情,SQLite和iPhone实际上都是非常有能力的。

答案 1 :(得分:2)

记住“感知性能” - 在敲击密钥后立即进行查找可能有些昂贵。但是,用户敲击密钥需要多少毫秒?在用户没有输入几百毫秒的任何内容之前,您可能无法更新结果列表。 (对于真正快速的用户,也许在他还在打字的时候更新每X百毫秒)。

答案 2 :(得分:1)

你怎么知道性能会不好? 40k行并不是那么多,即使对于iPhone来说......在优化之前在手机上试试。

答案 3 :(得分:0)

避免进行任何连接,尝试使用分页,以便将返回的数据量保持在最低限度。也许您应该尝试将整个内容加载到内存中,然后排序并进行二分查找?如果它只是一个节目标题列表,它适合吗?