在MySQL中,2k行更新非常慢
我有两张桌子: 1.新闻450k行 2.新闻组标记3m行 新闻表更新中有一些触发器用于更新列表。此SQL执行的时间太长在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 我怎样才能使它更快 提前感谢,,
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秒。问题在于触发器,但我不能禁用它们。嗨,罗宾,是的,这是一次性更新,但我必须更新生产数据库。所以禁用触发器是不可能的……如果禁用触发器,运行更新,然后启用事务中的所有触发器,那么表将被锁定,不允许运行其他查询。这假设它运行的速度足以实现这一点。