【问题标题】:What is more efficient: One predicate with "IN"-used format or [NSPredicate orPredicateWithSubpredicates:]什么更有效:使用“IN”格式的谓词或 [NSPredicate orPredicateWithSubpredicates:]
【发布时间】:2015-06-05 05:07:05
【问题描述】:

什么更有效?

  1. 使用带有“IN”的谓词,例如 [NSPredicate predicateWithFormat:@"myObjectId in %@", requiredIds] ;
  2. 为每个 ID 创建一堆谓词,例如 ([NSPredicate predicateWithFormat:@"myObjectId == neededIds[i]"]),然后使用此谓词创建复合谓词,例如 [NSPredicate orPredicateWithSubpredicates:perIdPredicates]?

我更喜欢第一种情况,因为它看起来更简洁,代码更少,但我的同事坚持认为复合谓词的第二种情况更有效(但我从未在 WWDC 中听说过)。

【问题讨论】:

  • 您可以自己检查:启用 Core Data SQL 调试 (stackoverflow.com/questions/6428630/…),您将看到所有 SQLite 查询和时间。
  • 正如 Martin 所说,调试核心数据时自己检查。我的经验是,这取决于您有多少个 IN 以及您需要多少个谓词。如果您可以在两个或三个子谓词中解决它,那就是要走的路。如果您需要更多,通常最好使用 IN 选项

标签: objective-c performance core-data code-readability


【解决方案1】:

我也在苹果论坛上问过这个问题,在这里我得到了什么:在大多数情况下(如我所料)可能使用“IN”更可取,因为请求优化器要做的工作更少。但可以肯定的是,我应该使用 CoreData 日志和仪器检查它。

https://devforums.apple.com/message/1125377#1125377

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多