Я набираю около 30 000 слов и показываю в таблице. Слова находятся в файле sqlite. Таким образом, выполнение запроса и загрузка слова в таблицу занимает много времени (15 секунд). Видимо, приложение ждет 15 секунд при запуске.
Как я могу обойти это?
NSLog(@"Query start");
CFTimeInterval startTime = CFAbsoluteTimeGetCurrent();
FMResultSet *rs = [db executeQuery:@"select * from words order by no ASC "];
while ([rs next]) {
Word *word = [[Word alloc] initWithID:[rs intForColumn:@"id"]
no:[rs stringForColumn:@"no"]
en:[rs stringForColumn:@"en"]];
[words addObject: word];
}
[rs close];
[db close];
CFTimeInterval endTime = CFAbsoluteTimeGetCurrent();
float deltaTimeInSeconds = endTime - startTime;
NSLog(@"Time spent for query: %f seconds", deltaTimeInSeconds);
ПРИМЕЧАНИЕ. Исходная таблица не отсортирована. Это список слов для словаря, поэтому при отображении он должен быть отсортирован по алфавиту в табличном представлении. вот почему мне нужно загрузить все слова. Фоновый поток может быть лучшей идеей, заполнять данные при извлечении из sqlite.
Поддерживает ли sqlite это? Выборка данных с помощью метода обратного вызова. например в запросе sqlite для каждой 1000 выбранных записей я обновлю свою таблицу. Я не совсем уверен, как это сделать, если вы знаете, пожалуйста, дайте мне несколько советов.