【发布时间】:2013-07-01 08:46:40
【问题描述】:
我有一个具有相对较大的 SQLite 数据库的应用程序,其中包含大约 15,000 行。在应用程序开始时,我运行SELECT * FROM TABLE 查询并填充包含ProverbRow 类元素的NSMutableArray *data。每个ProverbRow 对象对应于数据库中的一行数据,并包含与数据库的每个单元格对应的NSStrings 和NSIntegers。因此,NSMutableArray *data 对象实际上是 SQLite 数据库的副本。
现在,问题...
我想在应用中添加 搜索 功能,如下例所示:
当用户输入“abc”并点击搜索时,我想获取data 的所有元素,其中ProverbRow 对象内的NSString *proverb 包含字符串“abc”作为子字符串。所以,应该得到“abcde”、“qqqabcqqq”等字符串。
目前,为了实现这一点,我正在发出这样的查询:SELECT * FROM PROVERB WHERE PRONUNCIATION LIKE abc。我从查询中返回的对象存储在另一个 NSArray 中以供进一步使用。
现在,如果只有少量对象被返回,那么这个查询就足够快地完成,但是如果行数较多,则需要很多时间。
我想知道除了触发查询之外是否有更快的方法来完成此操作。是否可以使用已经填充的 data 对象并通过循环运行它并等同于子字符串或类似的东西? 我主要关心的是减少搜索时间。
谢谢!
【问题讨论】: