暂无图片
分享
yBmZlQzJ
2022-12-17
假如我要访问表第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)
复制
暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
yBmZlQzJ

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

暂无图片 评论
暂无图片 有用 2
打赏 0
yBmZlQzJ

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

暂无图片 评论
暂无图片 有用 2
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏