MySQL分页排序注意事项

        最近测试发现个bug,同一个列表,分页选择展示10条数据时和展示20条数据时,展示20条数据不是展示10条数据+下10条数据,数据有所错乱,如下图示。

SELECT
	id,
	no,
	year,
	quarter,
	dept_id,
	dept_name,
	create_time
FROM
	list_list 
ORDER BY
	year DESC,
	quarter DESC

limit 10

SELECT
	id,
	no,
	year,
	quarter,
	dept_id,
	dept_name,
	create_time
FROM
	list_list 
ORDER BY
	year DESC,
	quarter DESC

limit 20 

        排查问题后发现,根据年月筛选出的数据太多,没有唯一性。之前可能经常看到文章说筛选时要注意,选择由标识性的,区分度高的字段作为筛选项,或者索引原则之类的。但是对排序这块没多做思考。其实排序为了保证不同条件下的结果一致性,也需要增加一个唯一标识,可以让页面固定展示,不会出现因为同一排序条件数据太多导致的排序不一致问题,最简单就将自增主键的主键id作为辅助排序项。如下图。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值