SQL subselect 语句在某些机器上非常慢

SQL subselect statement very slow on certain machines

我有一个 sql 语句,其中我从 table(机器)获取所有 ID 的列表。

然后需要 (Events) 中另一行的最新实例,其中 id 匹配所以一直在做子选择。

我需要很多与 id 匹配的字段的最新实例,所以在这个单一语句中一个接一个地进行这些子选择,所以最终得到类似于这样的结果...

这行得通并且结果很准确,只是变得非常慢,因为事件 Table 有数百万条记录。机器 table 平均有 100 条记录。

是否有更好的子选择解决方案?也许做内连接或存储过程?

感谢帮助:)

您可以使用 apply。您没有指定如何定义“最新实例”。让我假设它基于时间列:

Select a.id, b.*
from TableA a outer apply
     (select top(1) b.Name, b.time, b.weight
      from b
      where b.id = a.id
      order by b.time desc
     ) b;

APPLY 和相关的子查询都需要一个 ORDER BY 来执行您想要的操作。

APPLY 很像 FROM 子句中的相关查询——有两个方便的增强功能。横向连接——从技术上讲是 APPLY 的作用——可以 return 多行和多列。