2016-11-04 74 views
0
UPDATE APA_Pended_Demand APD 
INNER JOIN APA_Generic_Demand_Details AGD 
    ON APD.demandID = AGD.demandID 
SET APD.genericDemandId = AGD.genericDemandId 
WHERE 
APD.isPend = 1 
AND COALESCE(AGD.genericDemandId, '') != '' 
AND APD.reactivateDate > UTC_TIMESTAMP() 
AND AGD.status < 300 
AND APD.ID BETWEEN 1 AND 10000 

我使用上面的代码为约3,00,000行更新,当我试图做的过程中,我们越来越吊死或超时和error.The索引正确使用但被绞死。MySQL查询得到绞死,不得不杀死

所以,任何人都可以请帮我得到这个整理出来

+0

你有没有试过这个查询作为select语句。选择这两列(在set语句中使用)并查看是否可以执行选择。如果它工作,那么更新将工作。优化你选择,然后将其转换为更新。 –

+0

将所有空的genericDemandIds设置为NULL – Strawberry

回答

0

一旦你已经删除了空白值,我怀疑是在覆盖索引 (demandID,isPend,reactivateDate)和(demandID,genericDemandId,状态)将有所帮助,而不是你目前得到的任何东西