问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sqlite如何优化

发布网友 发布时间:2022-04-07 17:44

我来回答

1个回答

热心网友 时间:2022-04-07 19:13

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
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离过年还有2个月,是找工作,还是等过年? 还有两个多月就过年了,我是现在找工作呢还是过完年再找呢?现在找工作是... i57300u处理器属于什么水平 i5-7300u处于什么水平 国家线2024考研分数线是多少 电脑软件使用记录如何查看电脑当天的使用记录 在哪里查电脑最近使用情况怎么查看笔记本电脑的使用记录 英语题急求 ...以前都是以1MB/s速度下载,但是现在都不到300K/s,是不是WiFi路由器... 我家4兆的网线1台电脑可是我今天测网速时却只有16KB/S 这是为什么啊 江西有哪几种蛇?几种有毒? 成都有眼镜蛇吗 奶牛都是母牛吗? 四川有哪些毒蛇啊 在我国饲养什么奶牛品种较好? 黑脊蛇进家是什么预兆 奶牛的本品种选育包括什么 在水里面游的蛇全身黑色的晚上会照着光油是什么蛇? 如何挑选高产奶牛? 湖北黄石最常见的毒蛇 中国荷斯坦奶牛的品种特点 益阳有哪些毒蛇品种 浓慕这个牌子的产奶奶牛是什么品种的奶牛? 黑脊蛇有毒吗? 我国主要饲养的奶牛品种是什么,其生产性能如何? 奶牛有多少种类 湖南益阳全身黑色是那一种蛇 求助这是什么蛇,表面全黑,吓死我了。有毒吗,刚才躲到砖堆里去了 完达山奶牛是什么品种? 黑脊蛇的简介 左边一个鱼右上是四又下两个小小是什么字 鱼加四加小念什么字? 鱼字旁上面一个四,四下面两个小 怎么念? 鱼四小小读什么 雅安上里古镇周围一般都有些什么蛇 鱼字旁上面一个四,四下面两个小 怎么念 懂蛇的行家来看看这是什么蛇 “鱼”字下面四个点读什么? 四个鱼读什么字? 生蚝肉绿色什么情况 左面一个鱼,右上面一个四,右下面一竖,一边两个点,念什么 海螺肉里发蓝是什么原因 四个鱼组合起来念什么? 海螺的尾巴到底是“屎”还是“黄”? 四个鱼是什么字 鱼字把下面一横换成四点读什么 海螺焯水后,,为什么水是绿的? 鱼一个四一个水读什么 海螺肉里面有蓝色的是什么能吃吗?我把除了壳以外都吃了! 我想问一下买个两家保险,能都报销吗