您的位置:首页 > 数据库

SQLite应用之路---SQL查询优化

2013-01-30 14:12 295 查看

SQLite应用之路---SQL查询优化

temp1: 2499条数据

temp6: 969596条数据

//注意时间单位ms和s
//其中temp1和temp2已经给eid加上索引

1.in和 exists

//外表大于子表的时候,使用in

//外表小于字表的时候,使用exists

select * from temp1 where eid in (select eid from temp6)//1.92s

select * from temp1 where exists (select eid from temp6 where eid = temp1.eid)//66.48ms

select * from temp6 where eid in (select eid from temp1)//98.25ms

select * from temp6 where exists (select eid from temp1 where eid = temp6.eid)//2.40s

2.limit

//offset 越大,执行时间越长。

select * from temp6 limit 900000,100//1.25s

select * from temp6 limit 1,100//7.12ms

//下面两句并没有网上说的效果

select * from temp6 where eid >= (select eid from temp6 order by eid limit 800000,1) limit 100//515.14ms

select * from temp6 limit 800000,100//474.13ms

3.union 和 union all

//在不考虑重复数据的时候,union all 比union效率高。

//union all 两张表的时候,应该将大表放在左边

select * from temp6 union select * from temp1//187.17s

select * from temp1 union select * from temp6//190.30s

select * from temp6 union all select * from temp1//8.39s

select * from temp1 union all select * from temp6//42.03s

4.join

//join两张表的时候,应该把小表放在左边

select * from temp1 a join temp6 b on a.eid = b.eid//54.21ms

select * from temp6 a join temp1 b on a.eid = b.eid//1.12s
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: