SQLite优化方法
例如:向数据库中插入100万条数据,在默认的情况下如果仅仅是执行
sqlite3_exec(db, “insert into name values ‘lxkxf', ‘24'; ”, 0, 0, &zErrMsg);
将会重复的打开关闭数据库文件100万次,所以速度当然会很慢。因此对于这种情况我们应该使用“事务”。
具体方法如下:在执行SQL语句之前和SQL语句执行完毕之后加上
rc = sqlite3_exec(db, "BEGIN;", 0, 0, &zErrMsg);
//执行SQL语句
rc = sqlite3_exec(db, "COMMIT;", 0, 0, &zErrMsg);
这样SQLite将把全部要执行的SQL语句先缓存在内存当中,然后等到COMMIT的时候一次性的写入数据库,这样数据库文件只被打开关闭了一次,效率自然大大的提高。有一组数据对比:
测试1: 1000 INSERTs
CREATE TABLE t1(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t1 VALUES(1,13153,'thirteen thousand one hundred fifty three');
INSERT INTO t1 VALUES(2,75560,'seventy five thousand five hundred sixty');
... 995 lines omitted
INSERT INTO t1 VALUES(998,66289,'sixty six thousand two hundred eighty nine');
INSERT INTO t1 VALUES(999,24322,'twenty four thousand three hundred twenty two');
INSERT INTO t1 VALUES(1000,94142,'ninety four thousand one hundred forty two');
SQLite 2.7.6:
13.061
SQLite 2.7.6 (nosync):
0.223
测试2: 使用事务 25000 INSERTs
BEGIN;
CREATE TABLE t2(a INTEGER, b INTEGER, c VARCHAR(100));
INSERT INTO t2 VALUES(1,59672,'fifty nine thousand six hundred seventy two');
... 24997 lines omitted
INSERT INTO t2 VALUES(24999,89569,'eighty nine thousand five hundred sixty nine');
INSERT INTO t2 VALUES(25000,94666,'ninety four thousand six hundred sixty six');
COMMIT;
SQLite 2.7.6:
0.914
SQLite 2.7.6 (nosync):
0.757
可见使用了事务之后却是极大的提高了数据库的效率。但是我们也要注意,使用事务也是有一定的开销的,所以对于数据量很小的操作可以不必使用,以免造成而外的消耗。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://www.juheyunku.com/sql/sqlite/10033.shtml
相关文章
热门TAG
命令 权重 外链 企业网站 白帽 php 织梦教程 dedecms修改内容 javascript 织梦 功能 标签 调用 详解 服务器 网站流量 实例解析 Dedecms 织梦cms HTML tags标签 python jquery教程 jquery windows SEO优化 蜘蛛 搜索引擎 网站收录 JSP最新文章
-
Androidsqlite增删改查基本运
时间:2020-12-29
-
Android数据存储(一)SQL
时间:2020-12-29
-
iOS开发数据库SQLite的使用
时间:2020-12-29
-
Android数据存储(三) SQ
时间:2020-12-29
-
SQLite数据库与Contentprovid
时间:2020-12-29
-
SQLite数据库管理系统-我所
时间:2020-12-28
-
SQLite数据库常用语句及M
时间:2020-12-24
-
sQlite常用语句以及sQlite
时间:2020-12-24
热门文章
-
sQlite常用语句以及sQlite developer的使用与注
时间:2020-12-24
-
SQLite数据库管理系统-我所认识的数据库引
时间:2020-12-28
-
Androidsqlite增删改查基本运用
时间:2020-12-29
-
Android数据存储(一)SQLite
时间:2020-12-29
-
iOS开发数据库SQLite的使用
时间:2020-12-29
-
Android数据存储(三) SQLite数据库存储
时间:2020-12-29
-
SQLite数据库常用语句及MAC上的SQLite可视化
时间:2020-12-24
-
SQLite教程(一):SQLite数据库介绍
时间:2020-12-24
-
SQLite数据库与Contentprovider(2)
时间:2020-12-29
