mysql limit查询优化_MySQL limit 分页查询优化(百万级优化)

1)简单的查询分页;分每页5条 limit [offset],[rows]

select t.* from t_topic t LIMIT 90000,10;

3cd912ca2ba52c5d32c85e7fcd94b6f8.png

2)建立id索引;查询索引id

select * from t_topic where id>=(select id from t_topic order by id limit 90000,1) limit 10;

b7930403792c3a6c872dd94ede6d8cb7.png

3)使用 between and 语句分页效率快N倍

SELECT * FROM t_topic WHERE id BETWEEN 90000 AND 90010;

56dcd9b194104af93e0a89a95b1eb8e8.png

4)分表存储;30万条记录的id存存储到单独的一个索引表t里面;先查找索引表t里面的id索引;然后再查询

5)使用复合索引查询数据

如果对于有where 条件,又想走索引用limit的,必须设计一个索引,将where 放第一位,limit用到的主键放第2位,而且只能select 主键!

完美解决了分页问题了。可以快速返回id就有希望优化limit , 按这样的逻辑,百万级的limit 应该在0.0x秒就可以分完。

看来mysql 语句的优化和索引时非常重要的!

#先查询索引id

select id from t_topic limit 90000,10;

#然后在in()里面包含该idSELECT * FROM t_topic WHERE id in (90001,90002,90003,90004,90005,90006,90007,90008,90009,90010);

通过简单的变换,其实思路很简单;通过优化索引,找出id,并拼成 “90001,90002,90003,90004,90005,90006,90007,90008,90009,90010″ 这样的字符串;

查询效率在百万级别的数据不成问题。

附图:

d05740ab67981eab6789d6c522bebe45.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值