您的位置:首页 > 数据库

sql出现在并发情况下offset+limit丢失数据,重复数据的解决办法

2013-05-03 22:09 417 查看
问题描述:

并发情况下,如果对一个表进行如下操作:

线程1:select * from table offset 1000 limit 1000

线程2:select * from table offset 2000 limit 1000

等等

发现数据会出现丢失,重复的现象,最后通过查资料发现要增加order by来解决,但是如果这张表没有自增id,就不太好办,主要是无法通过自增id来order by

这时候可以这样:select * from (select * from table order by 表主键) as 别名 offset 1000 limit 1000

这样的目的是强制排序后再offset + limit,不过会降低效率,也许通过join代替子查询可以解决,目前正在优化中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐