iOS 5 で sqlite を使用しているときに 1 つの問題に直面しています。2 つのテーブルからレコードをフェッチしています。
Recipe テーブルからすべてのレコードを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 でも問題なく動作します。
私が書いたコードが正しいことはわかっています。Sqlite bcoz の iOS 5.0 でのこのパフォーマンスの問題の背後にある正確な理由を知りたいのですが、私のアプリは完全にデータベースを中心に構築されています。