gpt4 book ai didi

mysql - 如何检测查询是否在状态 “Sending data” 下运行

转载 作者:行者123 更新时间:2023-11-29 12:04:37 24 4
gpt4 key购买 nike

我阅读了一些有关“发送数据”状态的解释,但我仍然不知道查询是否正在运行。他们说“发送数据”意味着服务器向客户端发送一些数据,但我真的不知道正在发送哪些数据。

What does it mean when MySQL is in the state "Sending data"?

我使用 Mysql Workbench 运行一些查询,当该查询执行时,Workbench 超时(10 分钟后)。然后我运行“show processlist”命令来查看查询是否继续执行。它说我的查询状态是“正在发送数据”。

顺便说一句,日志表有 1000 万条记录。所以这个查询必须在10小时内完成。我只是想知道我的查询是否真的仍在执行?

update logs join user
set logs.userid=user.userid
where logs.log_detail LIKE concat("%",user.userID,"%");

最佳答案

当它位于进程列表中时,它仍在运行。我认为您的查询运行速度非常慢,因为您正在执行交叉联接(这意味着您将一个表的每一列连接到另一个表的每一列,这可能会导致相当大量的数据,因此我进一步假设,您的查询没有执行您认为它执行的操作)并且不能在 where 上使用索引。条款。您可能正在对大量数据进行全表扫描。您可以通过执行 explain <your query>; 来验证这一点.
为了避免交叉连接,请在 on 中指定连接。子句,例如

update logs join user ON logs.userid = user.userid
set logs.whatever = user.whatever
where logs.log_detail LIKE concat("%",user.userID,"%");

关于mysql - 如何检测查询是否在状态 “Sending data” 下运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31746019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com