优化
Sqlite3和其他数据库一样,提供了事务的概念。对于一条sql语句的执行,我们几乎感觉不到花费的时间,或者可以忽略不计。但是如果同时插入1000条或者更多记录时,我们必须考虑执行的性能。下面是两个同时插入1000条记录的例子,前者是优化前的,后者是优化后的。它们的执行性能有明显的差别,前者执行时间:109.7810ms,后者执行时间仅为:0.1710ms。
优化前代码: #include <stdio.h> int main() char* sql="create table [test]([id] INTEGER PRIMARY KEY,[s] TEXT COLLATE NOCASE)"; start=(double)clock(); r=sqlite3_exec(db,sql,NULL,&zErrMsg); sqlite3_prepare(db,"insert into test(s) values(?);",-1,&stmt,&zTail); int i; finish=(double)clock(); 优化后代码: #include <stdio.h> int main() /*此处为添加的优化代码*/ r=sqlite3_exec(db,"BEGIN;",&zErrMsg);/*手动开始事务*/ sqlite3_prepare(db,i); /*添加的优化代码结束事务*/ r=sqlite3_exec(db,"COMMIT;",&zErrMsg);/*结束事务,提交*/ /* 这样SQLite将把全部要执行的SQL语句先缓存在内存当中,然后等到COMMIT的时候一次性的写入数据 库,这样数据库文件只被打开关闭了一次,效率自然大大的提高。有一组数据对比: 优化前后时间对比: 前:109。7810ms 后:0.1710ms 可见时间相差之大 */ finish=(double)clock(); printf("%.4fms",(finish-start)/1000); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |