sqlite数据库读写效率问题,终结!!各位别再踩坑了!
本帖最后由 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条数据去测试感觉不出来,用几万条测试就能感觉到了
循环查询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';
CREATE INDEX "索引名称"
ON "表名称" (
"字段" ASC,
"字段" ASC
)
1000条2秒
字段索引 :face (29):现在能接受了
3W数据,60秒完成,之前要40分钟,天哪!重获新生!终于不用煎熬的等待了! 当数据过大,用内存的方法也失效,可能是因为我把数据库读取到数组中,每次查询都是历遍!
最终的解决办法是读数据库,建索引
CREATE INDEX "索引名称" ON "表名称" ("字段" ASC,"字段" ASC); 下次带上可测试实例吧,这样孤零零的折腾挺令人心酸的 afan 发表于 2019-11-10 13:31
下次带上可测试实例吧,这样孤零零的折腾挺令人心酸的
:face (36):
数据库有几百M,不过终于终结了!现在舒服了!每次等程序分析完都好心累! 本帖最后由 afan 于 2019-11-10 15:37 编辑
个人认为,如果不是与他人共享的数据库,根本没必要使用这些标准的数据库。读取写入都有转换的过程,浪费效率,也缺乏应用的灵活性。 索引是爽,用 like 的 % 40万数据要十几秒,一个全文索引不到1秒{:1_240:} guoguo188 发表于 2019-11-13 18:03
索引是爽,用 like 的 % 40万数据要十几秒,一个全文索引不到1秒
有更让人开心的方法?快说说咋弄个啊! heavenm 发表于 2019-11-13 18:22
有更让人开心的方法?快说说咋弄个啊!
很简单的,索引有多种,其中一种是‘全文索引’,功能说白了和搜索引擎一样,比 like +% 搜索快,三言两语说不清,你搜索一下就了解了。
页:
[1]