Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 查询执行需要很长时间_Mysql_Sql_Mysql Workbench - Fatal编程技术网

Mysql 查询执行需要很长时间

Mysql 查询执行需要很长时间,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,我目前正在使用mysql 我有两个名为person和zim_list_id的表,两个表都有200多万行 我想使用zim_列表_id表更新person表 我使用的查询是 update person p JOIN zim_list_id z on p.person_id = z.person_id set p.office_name = z.`Office Name`; 我还创建了zim_list_id表和person表的索引,我执行的查询是 create index idx_person_of

我目前正在使用mysql

我有两个名为person和zim_list_id的表,两个表都有200多万行

我想使用zim_列表_id表更新person表

我使用的查询是

update person p JOIN zim_list_id z on p.person_id = z.person_id
set  p.office_name = z.`Office Name`;
我还创建了zim_list_id表和person表的索引,我执行的查询是

create index idx_person_office_name on person(`Office_name`);
create index idx_zim_list_id_office_name on zim_list_id(`Office name`);

查询执行时间很长。有没有办法减少执行时间?

Office Name上的索引对该查询根本不起作用。使用这些索引所做的只是使插入和更新速度变慢,因为现在数据库必须在列更改时随时更新索引

如果还没有,您真正需要的是这些表中person_id字段上的索引,以使连接更有效


您还可以考虑将Office名称作为第二列添加到<代码> ZimBistLyID/<代码>表索引中,因为这将允许数据库完全从索引中完全填充查询的那部分。但我不会这样做,直到我先设置了普通的person_id索引,然后检查了结果


最后,我想知道该服务器中有多少内存(特别是相对于数据库的总大小),MySql缓冲池大小设置中有多少内存可用,以及该服务器可能正在做的其他工作。。。也可能总是有环境因素。

您的联接列上已经有索引了吗?(人员id)在两个表中?请定义“非常长”。在添加索引之前和之后是否进行了测量?在表中有其他索引吗?我删除了所有的索引,但是它没有区别。“您也可以考虑添加<代码> Office EngEng/<代码>作为<代码> ZimyListurID表中的第二列”…你的意思是“作为
zim\u list\u id
表的
person\u id
索引上的第二列”?好的,我删除了所有索引,但没有任何区别,确定它工作了。我在两个表的person_id上重新创建了索引。更新只花了72秒。我在office_名称上创建索引时出错。谢谢你,乔尔