最近测试发现个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作为辅助排序项。如下图。