2014-04-28 113 views
0

我一直试图运行这个查询整晚,只有在早晨醒来,仍然看到它执行!你可以想象失望。那么,这是一个非常大的查询。我希望有人在查询优化知识可以看看查询,它是解释,看看它是否可以优化?这个查询将执行查看我的查询计划(Explain)

+0

最后2个加入报表是否不存在永恒的执行的原因。当我删除它们时,查询可以以1000的限制运行,但是如果我添加了这2个最后的查询并且甚至将限制设置为300,则需要永久使用 – Undisputed007

+1

2个子查询可能并不快,但不应该那么慢(它实际上没有使用索引来将这些结果与查询的其余部分结合起来)。根据你的确切表结构(即,AS_No unqiue),你可能可以避免使用子查询。不过,我怀疑一个更大的问题可能是你自己加入了update_detail,因为你没有看到索引,并且你正在对每一行进行计算(即增加59秒)。你在Update_id上​​有一个关键字,但是因为你只是检查不平等,我认为这不会有帮助。 – Kickstart

+0

你是否发布update_detail表?看起来你错过了第一个JOIN – StanislavL

回答

1

根据该意见的讨论从部分应该是这样的

FROM 
    update_detail u_d1 
     JOIN 
    update_detail u_d2 ON u_d2.Time >= u_d1.Time 
     and u_d2.Time <= u_d1.Time + interval 59 second 
     and u_d2.Update_ID > u_d1.Update_ID 
     and u_d2.Peer_IP=u_d1.Peer_IP