Mysql 在查看我的查询计划时,是否会执行此查询(解释)

Mysql 在查看我的查询计划时,是否会执行此查询(解释),mysql,sql,relational-database,Mysql,Sql,Relational Database,我整晚都在试着运行这个查询,直到第二天早上醒来,仍然看到它在执行!你可以想象这种失望。这是一个相当大的问题。我希望有查询优化方面的知识的人能看看这个查询及其解释,看看它是否可以优化?根据评论中的讨论,“来自”部分应该是这样的 FROM update_detail u_d1 JOIN update_detail u_d2 ON u_d2.Time >= u_d1.Time and u_d2.Time <= u_d1.Time + inte

我整晚都在试着运行这个查询,直到第二天早上醒来,仍然看到它在执行!你可以想象这种失望。这是一个相当大的问题。我希望有查询优化方面的知识的人能看看这个查询及其解释,看看它是否可以优化?

根据评论中的讨论,“来自”部分应该是这样的

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
来自
更新_详情u_d1
参加
在u_d2.Time>=u_d1.Time上更新u_详情u_d2
和u_d2.Time u_d1.Update_ID
和u_d2.Peer_IP=u_d1.Peer_IP

最后两条Join语句是永久执行的原因。当我删除它们时,查询可以以1000的限制运行,但是如果我添加了最后两个查询,甚至将限制设置为300,那么这两个子查询可能不会很快,但也不应该那么慢(实际上没有使用索引将这些查询的结果连接到查询的其余部分)。根据具体的表结构(即,is_No unqiue),您可能可以避免使用子查询。然而,我怀疑一个更大的问题可能是你加入了update_detail,而你似乎没有时间索引,加上你正在对每一行进行计算(即增加59秒)。您在Update_id上有一个键,但由于您只是在检查不平等性,我认为这不会有帮助。您可以发布Update_详细信息表吗?看起来你第一次错过了某个关系专栏JOIN@StanislavL我刚刚添加了模式,这足够了还是您想要创建查询?@Kickstart谢谢您的回复。因为No不是唯一的。因为No是属于Update_ID的数字列表,这就是为什么我要根据它们的数量(计数)进行比较。添加了我的架构:)