Mysql分页就要用到Limit进行分页,数据量/分页数小的时候Limit性能是可想而知的。 如:
上述SQL语句性能没有任何问题。
但是,如果当offset便宜了过大的情况就会出现性能瓶颈。 如:
若要解决Limit offset过大的时候,可以采用子查询的方法进行分页。 如:
等价于:
此时的性能是纯粹LIMIT 159000,100 的几倍至高。
但是问题又来了,子查询又必须是数据连续,所以无法加入WHERE查询条件,如:
此时的结果并非我想要的结果。
所以求高性能解决LIMIT分页的方法。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
最后一条 pid=10 AND pid>=(SELECT pid FROM posts LIMIT 159000,1) 有能同时成立吗?外面有的条件,子查询里面照样写就行了,和子查询的条件相同,order by相同,比如: select * from user where sex=2 and issingle=0 and id<=(select id from user where sex=2 and issingle=0 order by id desc limit 1000000,1) order by id desc limit 10";