MySql Update需要很长时间

时间:2017-11-13 10:50:19

标签: mysql

我在以下查询中发现了一个奇怪的行为:

UPDATE llx_socpeople SET no_email=1 WHERE rowid IN (SELECT source_id FROM llx_mailing_cibles where tag = "68d74c3bc618ebed67919ed5646d0ffb");

需要1分30秒。

当我将命令拆分为2个查询时:

SELECT source_id FROM llx_mailing_cibles where tag = "68d74c3bc618ebed67919ed5646d0ffb";

结果是10842

UPDATE llx_socpeople SET no_email=1 WHERE rowid = 10842;

结果以毫秒显示。

表llx_socpeople有大约7.000条记录,llx_mailing_cibles有大约10.000条记录。

MySQL版本是:5.7.20-0ubuntu0.16.04.1

我已经尝试优化/修复两个表而没有任何效果。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

目前,正在为主查询的每一行运行子查询,我们可以期望更长的执行时间。 我建议依靠内部联接来执行更新:

.7958466-05:00

这样你肯定会获得更好的表现。

您可以使用EXPLAIN MySql语句解决慢速查询问题。从官方文档中it's dedicated page了解有关它的更多详细信息。它可以帮助您发现任何缺失的索引。