找回密码
 加入
搜索
查看: 2254|回复: 10

[AU3基础] sqlite数据库读写效率问题,终结!!各位别再踩坑了!

[复制链接]
发表于 2019-11-8 18:54:30 | 显示全部楼层 |阅读模式
本帖最后由 heavenm 于 2019-11-10 13:12 编辑

原来需要40分钟的数据库分析,现在只需要90秒
研究了好几天。废寝忘食,终于OK了!


写效率:http://www.autoitx.com/thread-71679-1-1.html推荐方法,效率提升50倍以上:
安全有保障的加速写入方法,缺点就是需要在语句块前后加上_SQLite_Exec ( $__hdb,'BEGIN;' )
INSERT INTO "test"("%s") VALUES ("%s")
_SQLite_Exec ( $__hdb,'COMMIT;' )

读效率建索引,效率同样提升几十倍!
CREATE INDEX "索引名称" ON "表名称" ("字段" ASC,"字段" ASC);



内存的方法还是放弃了,读取到内存字典估计可以,历遍去读取,我冷静思考了一下。。。。。我发现2个3W的库,运行一次,等于要查询9亿次!难怪,我说怎么内存比读数据库还慢!用1000条数据去测试感觉不出来,用几万条测试就能感觉到了


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2019-11-9 00:54:56 | 显示全部楼层
循环查询1000条60秒

找到个办法,1000条11秒
6倍速度
SELECT*FROM t1 WHERE a='a'
UNION ALL
SELECT*FROM t2 WHERE a='a'
UNION ALL
SELECT*FROM t3 WHERE a='a';

 楼主| 发表于 2019-11-9 01:14:37 | 显示全部楼层
CREATE INDEX "索引名称"
ON "表名称" (
  "字段" ASC,
  "字段" ASC
)
1000条2秒
字段索引
 楼主| 发表于 2019-11-9 01:19:10 | 显示全部楼层
现在能接受了
3W数据,60秒完成,之前要40分钟,天哪!重获新生!终于不用煎熬的等待了!
 楼主| 发表于 2019-11-10 12:56:43 | 显示全部楼层
当数据过大,用内存的方法也失效,可能是因为我把数据库读取到数组中,每次查询都是历遍!
最终的解决办法是读数据库,建索引

CREATE INDEX "索引名称" ON "表名称" ("字段" ASC,"字段" ASC);
发表于 2019-11-10 13:31:05 | 显示全部楼层
下次带上可测试实例吧,这样孤零零的折腾挺令人心酸的
 楼主| 发表于 2019-11-10 14:25:39 | 显示全部楼层
afan 发表于 2019-11-10 13:31
下次带上可测试实例吧,这样孤零零的折腾挺令人心酸的


数据库有几百M,不过终于终结了!现在舒服了!每次等程序分析完都好心累!
发表于 2019-11-10 15:32:50 | 显示全部楼层
本帖最后由 afan 于 2019-11-10 15:37 编辑

个人认为,如果不是与他人共享的数据库,根本没必要使用这些标准的数据库。读取写入都有转换的过程,浪费效率,也缺乏应用的灵活性。
发表于 2019-11-13 18:03:06 | 显示全部楼层
索引是爽,用 like 的 % 40万数据要十几秒,一个全文索引  不到1秒  
 楼主| 发表于 2019-11-13 18:22:54 | 显示全部楼层
guoguo188 发表于 2019-11-13 18:03
索引是爽,用 like 的 % 40万数据要十几秒,一个全文索引  不到1秒

有更让人开心的方法?快说说咋弄个啊!
发表于 2019-11-13 18:45:48 | 显示全部楼层
heavenm 发表于 2019-11-13 18:22
有更让人开心的方法?快说说咋弄个啊!

很简单的,索引有多种,其中一种是‘全文索引’,功能说白了和搜索引擎一样,比 like +% 搜索快,三言两语说不清,你搜索一下就了解了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-23 17:14 , Processed in 0.077166 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表