背景:km_cmdoc_main这张表,有11w的数据,3天前,我执行了下面两条语句,更新了所有数据:
update km_cmdoc_main set fd_delete_type = '02';
update km_cmdoc_main set fd_enter_system = '02';
现象:
select *
from (select m.*
from km_cmdoc_main m
inner join (select distinct fd_cmdoc_id
from km_cmdoc_review_handler
where fd_company_id =
'139dc1399ef69959cd4e0a14395a3f8e') h
on m.fd_id = h.fd_cmdoc_id
union all
select mau.*
from km_cmdoc_auth au
inner join km_cmdoc_main mau
on au.doc_creator_company_id = mau.doc_creator_company_id
where au.fd_auth_id = '139dc23f04c6385c52ab1724864a9a121b')
where doc_status <> '10'
and fd_enter_system <> '02'
and fd_delete_type <> '02'
1.执行上面的sql语句,反复试了许多次,十几分钟都执行不完。请问是什么原因?
2.修改上面的sql,where语句换成这样:where doc_status <> '10,其他不变,则非常快
3.如果不用union,只单表查询,则非常快:
select *
from km_cmdoc_main
where doc_status <> '10'
and fd_enter_system <> '02'
and fd_delete_type <> '02'
------解决方案--------------------