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

问题描述

我有一个 sql 语句,可以从表(机器)中获取所有 Id 的列表。

然后需要 (Events) 中与 id 匹配的另一行的最新实例,因此一直在进行子选择。

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

这很有效,结果也很准确,因为事件表有数百万条记录,所以它变得非常慢。 Machine 表平均有 100 条记录。

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

感谢帮助:)

解决方法

您可以使用 http://localhost:8000/api/job.js。您没有指定“最新实例”的定义方式。让我假设它基于时间列:

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 的作用——可以返回多行和多列。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...