mysql分布式和分区limit offset加速

前一段时间在写分页语句。单机的mysql一般使用:

 select * from [table] limit [length] offset [offset]

这里的问题在于 offset 如果很大,那么意味着你要扫描整个表。当然如果offset很小,那这个速度还是相当快的。当然替换方案是使用where子句而不使用offset.

select * from [table] where column > [pre_column_value] limit [length]

然而对于使用主键做了Range分区,hash分区,或者使用了mysql搭建的分布式数据库。这里的问题在于分区的索引是局部的,而不是全局的。对于limit 和offset操作不光要获取到更多的数据,而言看起来也不是很安全。所以建议还是使用对主键进行order by。SQL语句是这样:

select * from [table] where key_column > [pre_key_column_value] order by key_column limit [length]

这样才是最保险的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值