我试图在我的sqlite数据库中插入1000行,但是花了超过16秒..我的代码中有什么问题我没看到?
NSLog(@"--start--");
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
static sqlite3_stmt *compiledStatement;
for(int k = 0; k < 1000; k++)
sqlite3_exec(database, [[NSString stringWithFormat:@"insert into myTable (id, name) values ('%i', 'a')", k] UTF8String], NULL, NULL, NULL);
sqlite3_finalize(compiledStatement);
sqlite3_close(database);
}
NSLog(@"--stop--");
start : 2010-11-27 11:21:11.704
stop : 2010-11-27 11:21:27.908
Run Code Online (Sandbox Code Playgroud)
谢谢 !
Bas*_*Ben 13
这是由于SQLite的自动提交.你需要打电话sqlite3_exec:
BEGIN TRANSACTION
Run Code Online (Sandbox Code Playgroud)
现在像以前一样插入所有记录.完成后.执行:
COMMIT TRANSACTION
Run Code Online (Sandbox Code Playgroud)
这应该够了吧.
同时此FAQ问题将解释为什么它是如此的慢得多.它实际上比常见问题解答中所述的每秒几十个查询要快得多,但由于iPhone上闪存的性质,这似乎是正常的.
我最后在插入查询中添加了这两行:
sqlite3_exec(database, "BEGIN", 0, 0, 0);
sqlite3_exec(database, "COMMIT", 0, 0, 0);
start : 2010-11-27 13:07:26.022
stop : 2010-11-27 13:07:26.285
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助 !
| 归档时间: |
|
| 查看次数: |
1887 次 |
| 最近记录: |