Как оптимизировать sqlite на iphone (загрузить 100000 строк)? - PullRequest
1 голос
/ 06 декабря 2011

У меня большая проблема.У меня есть 100000 строк в моей базе данных (sqlite).Я не могу уменьшить это число сейчас.

Я использую следующий код для получения данных из этой большой таблицы: wpis

-(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, но сейчас уже слишком поздно.Что я могу сделать, чтобы оптимизировать этот запрос?Потому что я должен вызывать это для каждой ячейки таблицы, и это очень, очень медленно.Есть ли решение?

1 Ответ

1 голос
/ 06 декабря 2011

Верните объект вместо возврата NSMutableArray. Он будет обрабатываться быстрее, чем ваш NSMutableArray, для 1000 строк.

Вы также можете проверить эту ссылку: - Каковы характеристики производительности sqlite с очень большими файлами базы данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...