Mysql 更新外键中使用的字段(增加值1000)需要很长时间
在我的数据库中,我有一个表消息InnoDB,它目前只有8行。架构如下: 消息:id:{type:integer,required:true,primaryKey:true,autoIncrement:true} 用户标识:{type:integer,必需:false,foreignTable:user,foreignReference:id} 发件人id:{type:integer,必需:false,foreignTable:user,foreignReference:id} 主题:{ 类型:varchar64} 内容:{type:longvarchar} 我需要更新user\u id和sender\u id字段,因为我正在增加user.id本身。为此,我使用以下SQL:Mysql 更新外键中使用的字段(增加值1000)需要很长时间,mysql,sql,performance,innodb,Mysql,Sql,Performance,Innodb,在我的数据库中,我有一个表消息InnoDB,它目前只有8行。架构如下: 消息:id:{type:integer,required:true,primaryKey:true,autoIncrement:true} 用户标识:{type:integer,必需:false,foreignTable:user,foreignReference:id} 发件人id:{type:integer,必需:false,foreignTable:user,foreignReference:id} 主题:{ 类型:v
set foreign_key_checks=0;
update message set user_id=user_id+10000 where user_id>0;
它的执行时间超过5分钟
我必须补充一点,我正在更新其他表上的user_id,我在这方面没有问题
所以我的问题是:有什么可能会如此缓慢?是不是在一个表中有两个外键指向用户?或者它可以是在用户id上的刷新索引,而在发送者id上单独刷新索引
此外:
自动提交=开启
每个表有多少行?InnoDB?迈萨姆?自动提交的价值是什么?使用BEGIN…COMMIT?@RickJames-这是一个疑问-它只有8行,AUTOCOMMIT=on,更新8行表需要5分钟。我想5分钟内没有别的东西碰那张桌子吧?在上提交一个bug。