iphone - sqlite 索引性能建议

标签 iphone sqlite search indexing

我的 iPhone 应用程序中有一个 sqlite 数据库,我可以通过 Core Data 框架访问该数据库。我正在使用 NSPredicates 来查询数据库。

我正在构建一个搜索函数,需要搜索六个包含文本的不同 varchar 字段。目前,它非常慢,我需要提高性能,可能是在 sqlite 数据库中。最好在所有这些列上创建索引吗?或者构建一个自定义索引表将这六列扩展为多行,每行包含一个单词及其匹配的 ID 会更好吗?还有其他建议吗?

最佳答案

您可以采取一些措施来提高在 sqlite 数据库中搜索文本的性能。尽管 Core Data 将您从底层存储中抽象出来,但了解当您的存储使用 sqlite 支持时发生的情况可能会很好。

如果我们假设您正在对这些字段进行子字符串搜索,则可以采取一些措施来提高搜索性能。 Apple 建议使用派生属性。这相当于在模型中维护用于搜索的属性的规范化版本。派生属性应该以可以索引的方式完成。然后,您可以使用二元运算符 > <= 等根据此派生属性表达搜索。

我发现这样做可以将我们的搜索时间从大约 1 秒缩短到 100 毫秒以下。

为了清楚起见,我建议查看 ADC 示例 http://developer.apple.com/mac/library/samplecode/DerivedProperty/

关于iphone - sqlite 索引性能建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1862771/

相关文章:

iphone - 拍照后翻转图像

iphone - 在 JSON 中发布用户名和密码

c++ - SQLite3 对象不理解?

php - 使用 PHP 和 MYSQL 组合字段搜索

iphone - 如何让亚洲字体在 iPad 上工作?

java - 处理丢失的连接插入

c - 在 SQLite C API 中使用 sqlite3_data_count() 而不是 sqlite3_column_count() 有什么好处?

java - 你如何在 .net 上运行 Lucene?

PHP 搜索/过滤功能

iphone - 实现视频通话的问题?