【发布时间】:2019-10-30 14:41:09
【问题描述】:
当我执行更多 MySQL 连接查询时,其中一个查询需要很长时间才能响应并进入进程列表。然后我执行
SHOW PROCESSLIST
查询。它将状态显示为“正在发送数据”,并且在 Rows_examined 中为我的查询显示了一个非常大的数字(757497478)。我们该如何解决这个问题?
【问题讨论】:
标签: mysql
当我执行更多 MySQL 连接查询时,其中一个查询需要很长时间才能响应并进入进程列表。然后我执行
SHOW PROCESSLIST
查询。它将状态显示为“正在发送数据”,并且在 Rows_examined 中为我的查询显示了一个非常大的数字(757497478)。我们该如何解决这个问题?
【问题讨论】:
标签: mysql
发送大量信息过去和现在都非常耗时。您可以改进硬件以确保它可以更快地处理大数据处理/发送,或者您可以将查询分解成块。如果您可以选择首先返回的行数,而不是一次选择所有信息,请使用limit 子句将其分解为分区并调用每个分区。这样,您的应用程序就不必等待发送整个答案,而是将其作为较小的批次加载,并在您等待第二批时开始处理第一批。这个问题没有解决方案,因为超出了一定的限制,你会遇到实际的无穷大,但是有一些方法可以更好地管理这个问题。此外,您可以查看您的查询,看看您是否需要 join 中的所有表,或者其中一些表是不必要的。
【讨论】: