1
hhjswf 2023-06-25 11:38:16 +08:00 via Android
主键是自增的话,用主键排序。
话说用 limit 分页不就好了吗。。还要手动做分页 |
2
brader 2023-06-25 11:38:16 +08:00 1
如果你时间粒度不够的话,比如你是存的秒级,然后同秒非常多数据,那你就应该要设定第二个排序字段啊,比如用 ID
|
3
opengps 2023-06-25 11:43:06 +08:00
时间精确到毫米级,yyyy/MM/dd HH:mm:ss.fffffff 至少可以做到把毫秒级不冲突的场景满足需要
|
4
gogogo1203 2023-06-25 11:51:22 +08:00
可以用 OFFSET ,反正一个页面显示的数量是固定的。
|
5
Still4 2023-06-25 11:52:11 +08:00
加入纳秒以及随机数,确保排序值不重复
|
6
sunhuawei 2023-06-25 12:04:21 +08:00
... WHERE start_time < last_start_time AND id < last_id ORDER BY start_time, id DESC
|
7
xuanbg 2023-06-25 12:06:32 +08:00
倒序分页直接 limit p, s 肯定会因为删除导致丢,新增导致重复啊。丢似乎没什么好办法,重复是可以通过 last id 解决的,还能顺带着解决 limit 效率低下的问题。
|
8
xiangyuecn 2023-06-25 12:11:58 +08:00
@hhjswf #1 @gogogo1203 #4 问题有这么简单就好了
如果先前排序后的顺序 和 新数据插入(或更新)后的顺序不一致,这个分页没法保证不丢数据的前提下不出现重复数据 并且问题现象是随机的 除非并发进行读写测试 不然你测都测不出来 |
9
makelove 2023-06-25 12:32:57 +08:00
用 <= 不就行了,如果有和之前尾部数据重复的去掉
|
10
chunworkhard 2023-06-25 13:48:21 +08:00
排序中加入第二个可以区别的字段, 比如 id
|
11
ben548 OP @sunhuawei 我也想到的是这个,WHERE start_time <= last_start_time AND id < last_id ORDER BY start_time, id DESC ,这个语句应该是能解决我的问题了
|
12
a7851578 2023-06-25 16:01:43 +08:00
按时间切分用分区表
|