【问题标题】:Which will be faster / efficient for filtering data, NSPredicate or SQLite?过滤数据,NSPredicate 或 SQLite 哪个更快/更有效?
【发布时间】:2014-10-12 22:49:48
【问题描述】:

因此,第一种方法是将原始源(巨大)数组放在内存中(最初取自 sqlite 数据库),然后在每次 textDidChange 事件触发时根据 NSPredicate 过滤该数组。

我还可以使用“where”和“limit”子句来过滤数据库表。

我现在正在使用第一种方法,过滤需要相当长的时间。我想知道如何提高效率。

这些方法中的哪一种可以解决性能问题?

【问题讨论】:

  • 我可能会选择查询 sqlite 数据库,即使它稍微慢一些,因为这样可以节省大量内存。但是,要获得问题的真正答案,您必须确定时间,因为每个案例都不同。
  • 为什么您的查询不能被索引?
  • 无法索引的原因是因为查询涉及“like %x%x%”之类的模式。我不认为我们可以索引这种查询,可以吗?

标签: ios objective-c sqlite uitableview


【解决方案1】:

如果您使用 CoreData,那么 NSPredicate 实际上会被翻译成 SQLite 代码,因此您正在执行 SQLite 操作。

如果您的数据在内存中,那么使用 Objective-C 或 Swift 代码要比 NSPredicate 高效得多。您只需要知道自己在做什么,因为 NSPredicate 会为您处理诸如区分大小写之类的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    相关资源
    最近更新 更多