我对MySQL的了解非常有限。但是这些是我的想法:
您的表没有索引。然后,该连接必须读取整个第二张表,以便针对第一张表的每一行进行比较。
子查询一次读取第二张表并创建一个索引,然后它不需要为第一张表的每一行读取整个第二张表。它只需要检查索引,这要快得多。
要验证我是否在尝试,请尝试为两个表中的order_number列创建索引(CREATE INDEX
…),然后再次运行这两个查询。您的第一个查询只需要不到一秒钟的时间,而不是一分钟。

我对MySQL的了解非常有限。但是这些是我的想法:
您的表没有索引。然后,该连接必须读取整个第二张表,以便针对第一张表的每一行进行比较。
子查询一次读取第二张表并创建一个索引,然后它不需要为第一张表的每一行读取整个第二张表。它只需要检查索引,这要快得多。
要验证我是否在尝试,请尝试为两个表中的order_number列创建索引(CREATE INDEX
…),然后再次运行这两个查询。您的第一个查询只需要不到一秒钟的时间,而不是一分钟。