Sqlite大数据量查询优化比较

JerryXia 发表于 , 阅读 (3,008)

标题写的有些大了……

我做的一个Web网站用的是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

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

添加新评论