MySQL基本查询占用异常长 - 解释计划看起来相当不错

时间:2016-10-19 16:36:07

标签: mysql performance join coalesce explain

我对下面的解释计划有疑问。这是非常基本的,每个联接都使用索引(虽然不是唯一的),而且它需要5个多小时。最大的表有大约10万条记录。 RAM和CPU没有挂钩或任何东西,没有运行其他查询,没有表锁。最复杂的"我所拥有的是外连接中的合并。这会杀了我吗?

为了澄清,我加入了同一个表两次,因为有些记录有一个用户ID,有些只有一个名字/姓。我更喜欢用一个唯一的用户名加入,其中一个选定的项目是coalesce(u1.job_title,u2.job_title)

from utilization_incident ui

left join users_utilization_v u1
       on  u1.cc_user_id = ui.assigned_to_user_id
       and u1.source_system = ui.source
       and u1.data_date = ui.data_date
left join users_utilization_v u2
       on  u2.first_name = ui.assigned_to_first_name
       and u2.last_name = ui.assigned_to_last_name
       and u2.source_system = ui.source
       and u2.data_date = ui.data_date

left join lkp_job_title_service_area jtsa
       on  jtsa.job_title = coalesce(u1.job_title, u2.job_title)

enter image description here

1 个答案:

答案 0 :(得分:0)

CPU可能没有挂钩,但是I / O呢?

多少内存? innodb_buffer_pool_size的价值是什么?

请提供SHOW CREATE TABLE 请提供整个SELECT 请提供EXPLAIN SELECT ...的文字版本。

等待进一步的细节,这些索引应该有所帮助:

users_utilization_v: INDEX(cc_user_id, source_system, data_date)
users_utilization_v: INDEX(first_name, last_name, source_system, data_date)
lkp_job_title_service_area: INDEX(job_title)

除非您需要,否则请移除LEFT