我对下面的解释计划有疑问。这是非常基本的,每个联接都使用索引(虽然不是唯一的),而且它需要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)
答案 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
。