使用分页查询获取全量数据遇到的问题

使用分页查询获取全量数据遇到的问题

问题

在数据库中进行 count 数据量是4050,但是在代码中通过分页查询进行统计之后的总量虽然是 4050,但是去重之后不到 4050。

select count(*) from `recording_score_task` where `business_type` = 22 and create_dt > '2025-04-07 07:00:59'

代码中的 sql 如下

<select id="search" resultMap="BaseResultMap" flushCache="true">  
	select    <include refid="Base_Column_List"></include>  
	from recording_score_task    <include refid="Search_Where"></include>  
	order by create_dt desc
</select>

问题就出现在order by create_dt,因为在数据库中同一秒中存在的数据时有多条,每次查询返回的数据顺序是不固定的。举个例子:
创建时间在 2025-04-09 11:20:20 的记录假设有两条,表中的数据如下:

taskNo create_dt
T123 2025-04-09 11:20:18
T124 2025-04-09 11:20:19
T125 2025-04-09 11:20:20
T126 2025-04-09 11:20:20

下面进行第一次查询,pageSize​ = 3,pageIndex​ = 1。结果如下:

taskNo create_dt
T123 2025-04-09 11:20:18
T124 2025-04-09 11:20:19
T125 2025-04-09 11:20:20

接着进行第二次查询,pageSize​ = 3,pageIndex​ = 2。结果如下:

taskNo create_dt
T125 2025-04-09 11:20:20

可以看到,有可能 T126​这条记录没有搜索出来。但是两次查询的总记录数跟数据库中的记录数是一致的。这种情况就会对我们的业务产生影响。

解决方案

当使用分页进行汇总所有数据时,需要使用order by id进行排序,或者分页参数的 pageSize使用一个比较大的数字,比如 Integer.MAX_VALUE

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇