Mysql更新语句耗时太长

时间:2010-11-11 22:11:53

标签: mysql performance sql-update

我有一个Mysql更新语句,它运行时间太长 - 52秒

update table_ea ea, table_a a 
  set ea.match_creator='S', a.match_state=N 
  where 
    ea.source_id=a.asset_id and 
    ea.source_name='S' and 
    ea.match_creator='S'  and  
    ea.entity_id like 'S'

问题:

a)我们可以像在Select语句中那样在Mysql中对此更新语句进行解释吗? b)关于如何最小化更新时间的任何建议..

2 个答案:

答案 0 :(得分:1)

查看相应的select语句的执行方式。你可能错过了一个索引。

如果您希望我们检查,您需要发布表信息。

尝试发布SHOW CREATE TABLE table_eaSHOW CREATE TABLE table_a

EXPLAIN SELECT ea.match_creator, a.match_state 
FROM table_ea ea, table_a a 
WHERE ea.source_id=a.asset_id 
AND ea.source_name='S' 
AND ea.match_creator='S' 
AND ea.entity_id like 'S'`

答案 1 :(得分:0)

您应该为表的以下字段创建索引,以使其更快(它加速了连接):

ea.source_id

a.asset_id

ea.source_name

ea.match_creator

ea.entity_id

我还建议您使用相等的运算符替换entity_id的like运算符,因为在这种情况下它是相同的。