如何优化iphone上的sqlite(加载100000行)



我有个大问题。我有100000行在我的数据库(sqlite)。我现在不能减少这个数字。

我使用以下代码从这个大表中获取数据:

-(NSMutableArray *) return_hours_for_near_two: (int) lacze : (int) hour :(int) okres {
    NSString * query = [ NSString stringWithFormat:@"SELECT godzina, minuta FROM wpis WHERE liniaprzystanekid=%i AND okres=%i AND (godzina = %i OR godzina = %i)", lacze, okres, hour,hour+1];
    NSLog(@"%@", query);
    const char * querystring = [ query UTF8String];
    NSMutableArray * temp = [ [NSMutableArray alloc] init];
    sqlite3_stmt * statment;
    if(sqlite3_prepare_v2(database, querystring, -1, &statment, nil) == SQLITE_OK){
        while(sqlite3_step(statment) == SQLITE_ROW){
            NSMutableArray * arr = [[[NSMutableArray alloc] init] autorelease];
            [arr addObject:[NSNumber numberWithInt: sqlite3_column_int(statment, 0)]];
            [arr addObject:[NSNumber numberWithInt: sqlite3_column_int(statment, 1)]];
            [temp addObject:arr];
        }
    } else {
        return NULL;
    }
    sqlite3_finalize(statment);
    return temp;
}

编辑:抱歉在数据库中混合语言:)

我知道我可以使用CoreData,但现在已经太晚了。我能做些什么来优化这个查询?因为我必须对每个表格单元格调用它,而且它非常非常慢。有解决办法吗?

返回对象而不是返回NSMutableArray它将比你的NSMutableArray 1000行处理得快。

你也可以检查这个链接:-非常大的数据库文件的sqlite的性能特征是什么?

最新更新