You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL带LIMIT的查询能否返回实际扫描的行数?

如何让MySQL返回查询扫描的行数

当然可以,MySQL提供了多种方式获取查询过程中扫描的行数,区分预估和实际扫描值两种场景:

一、获取预估扫描行数(执行前)

如果想在执行查询前了解MySQL预估需要扫描的行数,可以用EXPLAIN语句:

EXPLAIN SELECT * FROM `table` WHERE location like '%New York%' LIMIT 10;

查看结果中的rows列,这是MySQL基于表统计信息给出的预估扫描行数,可用来提前判断查询的大致开销。

二、获取实际扫描行数(执行后)

如果需要查询实际执行时扫描的行数,有两种常用方法:

1. 查看会话状态变量

先执行目标查询:

SELECT * FROM `table` WHERE location like '%New York%' LIMIT 10;

然后执行以下语句查看本次会话中最近一次查询的扫描行数:

SHOW SESSION STATUS LIKE 'Rows_examined';

返回的Value值就是实际扫描的行数(比如你示例中的30行)。

2. 使用EXPLAIN ANALYZE(MySQL 8.0.18+)

如果你的MySQL版本是8.0.18及以上,可以直接用EXPLAIN ANALYZE执行查询,它会在执行完成后返回包含实际执行统计的结果:

EXPLAIN ANALYZE SELECT * FROM `table` WHERE location like '%New York%' LIMIT 10;

结果中会明确标注Rows examined字段,显示实际扫描的行数,同时还能看到其他执行细节。

应用场景

像你提到的例子,通过实际扫描行数(30行)和返回结果数(10条),可以估算关键词的匹配比例,进而:

  • 提前给用户展示大致的结果数量,无需等待全量统计完成
  • 针对千万级数据,根据扫描比例估算全量统计的耗时,实现简易的加载进度条

内容的提问来源于stack exchange,提问作者Ned Hulton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:01:18