MYSQL SQL_CALC_FOUND_ROWS / FOUND_ROWS 分页计数

迁移特征 sql_calc_found_rows 的规则事实、精确目标横向结论与可执行验证路径。产品家族相似性不作为精确版本结论的依据。

pendingmajorhighmy.func.found_rows

场景说明

该场景属于“函数与表达式”,适用于 sql、mybatis。权威状态:待核验,不进入权威统计。

正向识别示例

以下均来自规则库中 should_hit=true 的合成公开示例,不是客户代码。

SELECT SQL_CALC_FOUND_ROWS * FROM t LIMIT 20
SELECT FOUND_ROWS()

21 个精确目标版本 / 模式

目标支持度证据等级公开边界深入核对
OceanBase 4.3.5 MySQL 模式partialdoc_based未登记额外公开说明,按来源与验证步骤复核。改造点
openGauss 6.0 B 模式(Dolphin)nonedoc_based未登记额外公开说明,按来源与验证步骤复核。改造点
展开 19 个 unknown / undeclared 结论
达梦 DM8unknownunverified当前事实源不足,不推断兼容。
GaussDB 505(ORA 模式)unknownunverified当前事实源不足,不推断兼容。
GBase 8sunknownunverified当前事实源不足,不推断兼容。
GoldenDB V6unknownunverified当前事实源不足,不推断兼容。
瀚高 HGDB 4.5unknownunverified当前事实源不足,不推断兼容。
人大金仓 KingbaseES V8unknownunverified当前事实源不足,不推断兼容。
OceanBase 4.2.5 MySQL 模式unknownunverified当前事实源不足,不推断兼容。
OceanBase 4.2.5 Oracle 模式unknownunverified当前事实源不足,不推断兼容。
OceanBase 4.3.5 Oracle 模式unknownunverified当前事实源不足,不推断兼容。
openGauss 5.0 A 模式undeclaredunverified当前事实源不足,不推断兼容。
openGauss 6.0 A 模式undeclaredunverified当前事实源不足,不推断兼容。
磐维 PanWeiDB 2.0unknownunverified当前事实源不足,不推断兼容。
磐维 PanWeiDB 3.0 A 模式unknownunverified当前事实源不足,不推断兼容。
PolarDB(Oracle 兼容)2.0unknownunverified当前事实源不足,不推断兼容。
PostgreSQL 16 + orafce 4.16undeclaredunverified当前事实源不足,不推断兼容。
PostgreSQL 16undeclaredunverified当前事实源不足,不推断兼容。
神通数据库 7unknownunverified当前事实源不足,不推断兼容。
TDSQL Boundlessunknownunverified当前事实源不足,不推断兼容。
TiDB 8.5unknownunverified当前事实源不足,不推断兼容。

改造与验证路径

推荐方向

app_side · 先按同一连接的前一条 SELECT 分支:带 SQL_CALC_FOUND_ROWS 时,只移除全局 LIMIT 并保留完整原查询关系,再用外层 COUNT(*) 计数;DISTINCT/GROUP BY/HAVING/UNION 必须保留在被计数的完整原关系结果内,不能退化为“同 WHERE 的 COUNT(*)”,且 UNION DISTINCT 的源值可能近似,需显式批准保留或收紧。无 SQL_CALC_FOUND_ROWS 时,FOUND_ROWS() 是前一条 SELECT 的实际返回行数(含 LIMIT 上限),应由驱动/分页层记录返回行数,禁止替换成无限制总数。COUNT(*) OVER() 仅用于已证明等价且非空页的简单关系,空页回退独立 COUNT

库侧

MySQL 8.0 已废弃该特性,库侧无等价承接 · 风险 manual

应用侧

分页组件关联前一条 SELECT;按有无 SQL_CALC 分别读取实际返回行数或对移除全局 LIMIT 后的完整结果关系计数 · 风险 review

验收步骤

在同一连接与隔离级别下覆盖无 SQL_CALC、空页、尾页、offset、DISTINCT、GROUP BY/HAVING、UNION ALL/UNION DISTINCT 和并发写入;逐例比对源 FOUND_ROWS()、实际返回行数及改写计数,并对两查与窗口方案分别做计划和耗时对比

公开来源