当前位置:   article > 正文

《Java实战开发》mysql 默认分页查询,主键索引,和联合唯一索引的坑_连接查询分页必须按主键分页才能保证每页数据唯一

连接查询分页必须按主键分页才能保证每页数据唯一

最近遇到一个比较坑的问题,列表分页查询的时候,查询全部没问题,根据条件查询就会出现乱序,多页之间有重复数据的问题。

 

因为用的通用mapper组件,于是打出来sql看了下,发现分页查询sql没有order  by,结果查询出来的顺序是乱的,因为查询条件之一是联合唯一索引的第一个字段,因为索引左前缀规则 ,有时候按照主键id排序,有时候按照联合唯一索引之一排序,不同的页面有重复的数据。

表结构:

  1. DROP TABLE IF EXISTS `t_pos_payment_code`;
  2. CREATE TABLE `t_pos_payment_code` (
  3. `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  4. `pos_channel_id` int(10) DEFAULT NULL COMMENT 'POS Channel Id',
  5. `payment_code_group_id` int(10) unsigned NOT NULL COMMENT 'Payment code group ID',
  6. `pos_issuer_code` varchar(10) COLLATE utf8_bin NOT NULL COMMENT 'POS Issuer Code',
  7. `issuer_code` varchar(10) COLLATE utf8_bin NOT NULL COMMENT 'Issuer Code',
  8. `issuer_name` varchar(50) COLLATE utf8_bin NOT NULL COMMENT 'Issuer Name',
  9. `create_datetime` datetime DEFAULT NULL COMMENT 'create_datetime',
  10. `modify_datetime` datetime DEFAULT NULL COMMENT 'modify_datetime',
  11. `teller` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT 'teller',
  12. `comment` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT 'comment',
  13. PRIMARY KEY (`id`),
  14. UNIQUE KEY `uniq_payment_code_group_id_issuer_code` (`payment_code_group_id`,`issuer_code`) USING BTREE
  15. ) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='SPS Mgmt t_pos_payment_code';

 

sql:

  1. SELECT id,pos_channel_id,payment_code_group_id,pos_issuer_code,issuer_code,issuer_name,COMMENT,teller,create_datetime,modify_datetime FROM t_pos_payment_code WHERE payment_code_group_id = 1024 LIMIT 0,20
  2. SELECT id,pos_channel_id,payment_code_group_id,pos_issuer_code,issuer_code,issuer_name,COMMENT,teller,create_datetime,modify_datetime FROM t_pos_payment_code WHERE payment_code_group_id = 1024 LIMIT 20,20

查询结果:

发现是mysql索引的问题,参考博文:https://www.cnblogs.com/yaowen/p/8268183.html

解决就是在查询语句中加上order by 指定排序。直接默认是不规范的,容易出问题

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/484139
推荐阅读
相关标签
  

闽ICP备14008679号