我正在訪問近30,000個單詞並在表中顯示。這些單詞在一個sqlite文件中。所以需要很長時間(15秒)來運行查詢並將該單詞加載到表中。顯然,該應用程序在啓動時等待15秒。iPhone快速sqlite查詢
我該如何解決這個問題?
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條記錄,我將更新我的表。我不太確定如何做到這一點,如果你知道PLZ給我一些提示。
表索引? – 2010-11-02 12:28:00
我不這麼認爲。這是一個sqlite語言表,用於在Java中創建的字典(數據輸入在桌面上完成)。 – karim 2010-11-02 13:13:16
索引提高了性能。但並不多。它將加載時間從15秒降低到6/7秒。 – karim 2011-04-02 18:34:38