假如我要访问表第10000行开始的10行数据,你有什么好的优化方法?(有没有提高分页性能的方式)
假如我要访问表第10000行开始的10行数据,你有什么好的优化方法?(有没有提高分页性能的方式)
收藏
复制链接
微信扫码分享

在小程序上查看
分享
3条回答
默认
最新
通常我们用limit N M来获得第N行开始的M行数据,但是这样会读前10000行数据,显然它们并没有用,还会带来巨大性能开销。
第一次优化:我们可以采用where子句判断和自增id:
select name from tbl where (id>=10000) limit 10;
复制
但这种方法要求表必须有自增索引,而且还必须是连续的。
第二次优化:我们先查找需要数据的索引列,再通过索引列找出需要的数据。设需要查找的用户是xxx。
Select * From table_name Where id in (Select id From table_name where ( user = xxx )) limit 10000, 10;
复制
第三次优化:in操作在数据量大的时候效率就不行了,我们可以用join代替。
select * from table_name inner join ( select id from table_name where (user = xxx) limit 10000,10) b using (id)
复制


打赏 0

第三次优化:in操作在数据量大的时候效率就不行了,我们可以用join代替。


打赏 0
回答交流
Markdown
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
添加图片链接
上传图片
导航目录
Markdown语法参考
请输入正文
提示
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
