Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中,2k行更新非常慢_Mysql_Performance - Fatal编程技术网

在MySQL中,2k行更新非常慢

在MySQL中,2k行更新非常慢,mysql,performance,Mysql,Performance,我有两张桌子: 1.新闻450k行 2.新闻组标记3m行 新闻表更新中有一些触发器用于更新列表。此SQL执行的时间太长 UPDATE news SET news_category = some_number WHERE news_id IN (SELECT news_id FROM news_tags WHERE tag_id = some_number); #about 3k rows 我怎样才能使它更快 提前感谢,,

我有两张桌子: 1.新闻450k行 2.新闻组标记3m行

新闻表更新中有一些触发器用于更新列表。此SQL执行的时间太长

UPDATE news
SET news_category = some_number
WHERE news_id IN (SELECT news_id
                  FROM news_tags
                  WHERE tag_id = some_number); #about 3k rows
我怎样才能使它更快

提前感谢,,
S.

如果这是一次性更新,您可能会发现最好禁用触发器,运行更新,然后运行语句执行触发器的批量操作。

请定义慢速。什么东西太长了?执行计划看起来怎么样?查找要更新未索引的标记id的数据时出现问题,或者由于触发器可能非常慢而导致执行中出现问题?您是CPU还是IO受限?这是对生产数据库的一次性更新,需要5分钟以上的时间。我们的web应用程序在查询执行期间返回504错误。。。从新闻中选择新闻id,其中新闻id在从新闻标签中选择新闻id,其中标签id=某个数字需要1.04秒。问题在于触发器,但我不能禁用它们。嗨,罗宾,是的,这是一次性更新,但我必须更新生产数据库。所以禁用触发器是不可能的……如果禁用触发器,运行更新,然后启用事务中的所有触发器,那么表将被锁定,不允许运行其他查询。这假设它运行的速度足以实现这一点。