Sqlite大数据量查询优化比较-转

标题写的有些大了……

我做的一个PHP玩具用的是Sqlite数据库,昨天某网站采集了4039篇文章,发现页面打开速度慢的要死,看了一下耗时,发现sqlite在数据量比较大(4000算大?……我觉得挺大的了)的时候执行order by xxx desc会变得很慢……

1、select * from blog_cms where status=1 limit 0,10

耗时15ms

2、select * from blog_cms where status=1 ORDER BY id DESC limit 0,10

耗时1187ms

如果Sqlite查询只是搜索出id会快些↓

3、select id from blog_cms where status=1 ORDER BY id DESC limit 0,10

耗时650ms

那么就这样来,Sqlite查询直接搜索id,然后再通过id查询详细信息↓

4、select * from blog_cms where id in(select id from blog_cms where status=1 ORDER BY id DESC limit 0,10) order by id desc

耗时656ms

这样基本上是满足条件的Sqlite查询速度最快的方法了,我们再来看看Sqlite查询时去掉status=1的条件时的查询速度

5、select * from blog_cms where id in(select id from blog_cms ORDER BY id DESC limit 0,10) order by id desc

耗时75ms

第一个查询真快,咱们再看看这样一个Sqlite查询语句

6、select * from blog_cms where status=1 limit 4000,10

耗时593ms

简单的逆序查询用第四个方法是最快的。

诸如其他的Sqlite查询语句的优化,请谷鸽之


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值