MySQL查询执行时间与数据返回耗时差异原因及效率对比咨询
MySQL查询耗时差异问题解析
一、执行时间与实际等待时间差异的核心原因
- MySQL命令行显示的
0.12秒,仅统计数据库服务器完成查询计算、生成结果集的耗时,也就是服务器端的处理时间,不包含结果集从服务器传输到客户端、客户端渲染输出数据的时间。 - 你实际等待的数分钟,是服务器传输10万行数据到命令行客户端,加上命令行逐行输出文本的总耗时——这部分不在MySQL统计的“执行时间”范围内。
二、查询的真实执行时间怎么定义?
- 服务器端的处理时间(即命令行和Workbench显示的0.12/0.14秒)才是查询本身的真实执行时间,这是数据库执行SQL、生成结果的核心耗时,也是你做数据库效率对比时应该重点关注的指标。
- 如果要统计从发起请求到客户端拿到所有数据的端到端总耗时,可以在命令行用
time命令包裹执行:
这样得到的总时间就是服务器处理+数据传输+客户端处理的全部耗时。time mysql -u你的用户名 -p你的密码 -e "select * from jmeterschema.tabela_inz;"
三、命令行客户端比Workbench慢的原因
- 命令行是纯文本终端,每一行数据都要实时转换成字符串打印到界面,终端渲染大量文本的速度本身就很慢,10万行数据逐行输出的开销极大。
- Workbench作为图形化工具,会批量接收服务器传输的结果集,内部先缓存数据再统一渲染展示,不会像命令行那样逐行实时输出,所以整体感知更快,而且它显示的时间同样只统计服务器端的处理耗时,不包含自身渲染的时间。
内容的提问来源于stack exchange,提问作者Mateusz G
相关产品推荐
相关产品推荐

