TIDB没有加order by 或者 order by 字段相同时,分页数据会重复或者不会变化

TIDB没有加order by 或者 order by 字段相同时,分页数据会重复或者不会变化;;
这个问题时需要开启TIDB的什么配置嘛?还是由于什么原因引起的这个情况》?
分页用的mybatis,数据库字符集为utf8mb4,排序规则为utf8mb4_general_ci

把相关sql拿出来看看,具体怎么分页的

:flushed:不排序分页?会不会每次取都是随机顺序?按开发规范,分页肯定是要加分页的。

分页肯定要加 order by 拉

因为tidb是存储和计算分离的架构,你的实际数据存储在tikv里面,你在tidb-server执行sql,获取数据,假如有多个tikv中存储有符合条件的数据,如果你没有加order by ,那就是谁先返回(哪个tikv的数据先返回),谁就在前面。
如果你使用了order by字段,但是字段不唯一,相同字段的数据的顺序也不确定,因为这种是tikv返回后,在tidb内部重新排序,字段值一样的数据顺序不确定。
跟字符集和排序规则没啥关系。

1 个赞

分页按主键或者唯一键排序,100%不会出现问题

看下这个:https://docs.pingcap.com/zh/tidb/stable/dev-guide-unstable-result-set/#结果集不稳定

1 个赞