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

MySQL分页排序注意事项_第1张图片

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

limit 20 

MySQL分页排序注意事项_第2张图片

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

MySQL分页排序注意事项_第3张图片

MySQL分页排序注意事项_第4张图片

你可能感兴趣的:(MySQL,mysql,数据库)