我在 iOS 5 中使用 sqlite 时遇到一个问题。我从两个表中获取记录:一个在 Recipe 中,另一个在来自一个 Menu.db 的成分中
从食谱表中我得到所有记录,并recipeid
在此基础上从配料表中获取记录。在 iOS 4.2 上运行时获取记录不需要时间,但是当我在 iOS 5 上运行时,获取记录需要时间。请参阅以下代码:
NSString *query = [NSString stringWithFormat:@"select id from Recipes"];
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, [query UTF8String], -1, &selectstmt, NULL) == SQLITE_OK) {
while(sqlite3_step(selectstmt) == SQLITE_ROW) {
rcp.recipeID = sqlite3_column_int(selectstmt, 0);
NSString *sql = [NSString stringWithFormat:@"select Name from Ingredients where recipeId = %d",rcp.recipeID];
sqlite3_stmt *stmt2;
if(sqlite3_prepare_v2(database, [sql UTF8String], -1, &stmt2, NULL) == SQLITE_OK) {
while(sqlite3_step(stmt2) == SQLITE_ROW) {}
}
}
}
为什么这个问题出现在 iOS 5.0 中,相同的代码在 iOS 4.0、4.2 上运行良好?
我知道,我编写的代码是正确的,我想知道 iOS 5.0 for Sqlite 的性能问题背后的确切原因,因为我的应用程序完全围绕数据库构建。