mysql分页查询漏数据_mysql排序不稳定,分页查询数据有重复和遗漏

现象:业务方在系统添加用户时,提示 用户A已经存在,但是界面中没有。

解决过程:数据库中看得到。

查看sql语句,在线上sql工具查询,但是不支持分页,不方便复现问题。

select * from user where yn = 1 order by roleType 是有的。

那为啥 select * from user where yn =1 order by roleType limit 0,10;

数据就出现问题呢?

看了很久,也没有发现问题。

本地数据量太少,又懒,没有把线上用户数据导入到本地测试表。

把sql发给了dba,帮忙分析了下。

很可能的原因:roleType不是主键,多个用户的 角色可能是一致的。最终mysql分页时,取数据 不稳定。

这里有个奇怪的问题,在线上和本地,单独执行不带limit语句的查询结果是稳定的。

难道只有在limit分页的时候,才会不稳定?

解决办法是,增加id desc 第2个排序条件。

当roltType相同的时候,再按照 id 降序,确保顺序是唯一的。

------------------------------------------------------------------------

第1页和第2页存在重复的用户,还漏掉了部分用户。

第1次遇到。

平时看sql,感觉也没啥。

遇到了问题,猛然一惊"还有这种操作"。

你可能感兴趣的:(mysql分页查询漏数据)