• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 谓词中的逻辑运算符是否与 NSFetchRequest 短路?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 03:53:29 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个使用逻辑 OR 运算符的 NSPredicate,如下所示:

NSPredicate(format: "activeFrom == NULL OR %@ >= activeFrom", someDate)

当我使用此谓词从 CoreData 获取结果时,使用 NSFetchRequest,评估是否短路,因此如果第一个子句评估为 true,则不会评估第二个子句?

对于 Apple 来说,这似乎是一个明智的优化,但我在文档中找不到任何官方信息来确认它。



Best Answer-推荐答案


来自 Core Data Programming Guide ,性能部分:

Fetch Predicates

How you use predicates can significantly affect the performance of your application. If a fetch request requires a compound predicate, you can make the fetch more efficient by ensuring that the most restrictive predicate is the first, especially if the predicate involves text matching (contains, endsWith, like, and matches). Correct Unicode searching is slow. If the predicate combines textual and nontextual comparisons, it is likely to be more efficient to specify the nontextual predicates first; for example, (salary > 5000000) AND (lastName LIKE 'Quincey') is better than (lastName LIKE 'Quincey') AND (salary > 5000000). For more about creating predicates, see Predicate Programming Guide.

所以,是的,谓词的评估似乎已如您所料优化。这在很大程度上取决于 SQLite 如何优化相应的 WHERE 子句(假设您使用的是 SQLite 存储)。

关于ios - 谓词中的逻辑运算符是否与 NSFetchRequest 短路?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48148709/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap