select id,title from user limit 1000,10; 0.02秒
select id,title from user limit 88888,10; 8-9秒
select id,title from user order by id limit 88888,10; 0.04秒就OK。或者
select id,title from user where id>=(select id from user order by id limit 88888,1) limit 10;
这就是用了id索引的结果。
select id from user where type=1 order by id limit 88888,10; 8-9秒!
type 有索引了?
答案就是:复合索引! 开始的select id from user order by id limit 88888,10; 这么快就是因为走了索引,可是如果加了where 就不走索引了。加了search(type,id) 这样的索引。然后测试
select id ,title from user where type=1 limit 88888,10; 0.04秒!
综上:如果对于有where 条件,又想走索引用limit的,必须设计一个索引,将where 放第一位,limit用到的主键放第2位,而且只能select 主键!
select * from user where id in (9000,12,50,7000); 0秒,但in的个数不能太多
写好sql后最好explain sql 看一下执行效率,有没有利用索引等