按照创建时间排序的分页查询在数据量大时可能会造成分页时数据丢失
原因:创建时间仅到时分秒,因此可能会有多条数据的创建时间相同,导致排序混乱,从而在分页时造成个别数据未查询到
解决方式:可将创建时间精确到毫秒,类型改为timestamp(6)
对于存量数据的创建时间增加毫秒值sql如下:
update xxx set create_date = create_date + age(clock_timestamp()::timestamp(6), clock_timestamp()::timestamp(0))
即生成一个精确到秒和精确到毫秒的当前时间,将它俩的差值拼接在原有的存量数据上
另外引起数据分页查询重复或丢失也可能是数据的动态增删导致:
可参考以下作者文章: