如果Mysql查询:

SHOW PROCESSLIST;

是否在状态列中返回"发送数据"?

我想这意味着查询已经执行,MySQL正在向客户端发送"结果"数据,但我想知道为什么要花这么多时间(最多一个小时).

非常感谢.

推荐答案

这是一种误导性的状态.它应该被称为"读取和过滤数据".

这意味着MySQL在磁盘(或内存)上存储了一些数据,这些数据尚未被读取和发送.它可能是表本身、索引、临时表、排序输出等.

如果您有一个1M records表(没有索引),您只需要一条记录,MySQL在扫描该表时仍会将状态输出为"发送数据",尽管它尚未发送任何内容.

MySQL 8.0.17 and later:该状态不再单独表示,而是包含在Executing状态中.

Mysql相关问答推荐

我如何才能从MySQL过程中获取LARAVEL端的数据?

MySQL RDS ALTER TABLE ENUM短暂中断了我的数据库连接

为什么MySQL派生条件下推优化不起作用

将类图转换为SQL数据库

为大表优化 Django 模型

for each 查询设置 MySQL @@session.time_zone 而不是 CONVERT_TZ 的缺点?

估计对大表进行分区所需的时间

仅计算 DATEDIFF (MySQL) 中的工作日

为什么 MySQL 不使用索引进行简单的SELECT * FROM Table WHERE field='value'查询?

MYSQL 删除两个已知字符串之间的字符串

为什么这个查询需要超过 5 秒才能运行?

带有 PARTITION BY 子句的 ROW_NUMBER() 停止在 MariaDB 上工作

如何在 MYSQL 中使用多个表进行插值

试图获取非对象的属性

将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是什么?

Sequelize Query 查找日期范围内的所有记录

MySQL错误 1005 (HY000): 无法创建表 'foo.#sql-12c_4' (errno: 150)

在 Mac 上设置 Laravel php artisan migrate 错误:没有这样的文件或目录

'LIKE ('%this%' OR '%that%') and something=else' 不起作用

mysql GROUP_CONCAT 重复