你好我真的被我的应用程序困住了。我需要使用 SQLITE3 在我的一张大约 250.000 行 (50mb) 的表上进行简单的 SELECT。当我使用 Iphone Simulator 加载时,查询大约需要 3 秒。当我在设备上测试我的应用程序时,查询需要 90 秒。不幸的是,我无法在等待 90 秒的情况下发布我的应用程序。在这里我发布我的代码:
-(void) loadResults {
sqlite3 *database;
NSMutableString *street;
zone = [[NSMutableArray alloc] init];
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
const char *sqlStatement = [[NSString stringWithFormat:@"select street from streets "] UTF8String];
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
street = [NSMutableString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
[zone addObject:street];
}
}
sqlite3_finalize(compiledStatement);
}
sqlite3_close(database);}
这就是我使用 SQLITE3 创建表的方式
CREATE TABLE streets (id INTEGER PRIMARY KEY, street TEXT, province TEXT, country TEXT, from TEXT, to TEXT, lat TEXT, lon TEXT);
CREATE INDEX strIndx on streets(street);
如您所见,没有 WHERE 语句,它只是一个简单的“从街道选择街道”
请我在这里需要帮助提前谢谢。