外键中使用的更新字段(增加值1000)需要很长时间

时间:2015-03-24 13:12:50

标签: mysql sql performance innodb

在我的数据库中,我有表message InnoDB ,目前只有8行。下面的架构:

  

message:id:{type:integer,required:true,primaryKey:true,autoIncrement:true}

     

user_id:{type:integer,required:false,foreignTable:user,foreignReference:id}

     

sender_id:{type:integer,required:false,foreignTable:user,foreignReference:id}

     

主题:{   type:varchar(64)}

     

内容:{type:longvarchar}

我需要更新user_idsender_id字段,因为我自己正在增加user.id。为此,我使用了这样的SQL:

set foreign_key_checks=0;
update message set user_id=user_id+10000 where user_id>0;

执行超过5分钟

我必须补充一点,我也在其他表上更新user_id,我没有问题。

所以我的问题是:这种减速的可能性是什么?是否在一个表中指向 user双重外键?或者它可以是user_id上的刷新索引,也可以是sender_id上的单独索引?

此外:

  

AUTOCOMMIT =上;

0 个答案:

没有答案