SQL性能—在联合之前或之后过滤查询
本文关键字:或之后 过滤 查询 性能 SQL | 更新日期: 2023-09-27 17:49:27
我有一个查询,看起来像这样:
SELECT PersonId,
Note,
Amount
FROM Table1 A
WHERE A.PersonId = @PersonId
UNION
SELECT PersonId,
Note,
Amount
FROM Table2 B
WHERE B.PersonId = @PersonId
UNION
SELECT PersonId,
Note,
Amount
FROM Table3 C
WHERE C.PersonId = @PersonId
现在,这个查询最终将返回数千个结果,因此我想构建性能最好的查询。我想知道这是否比在合并之后过滤PersonId更有效,例如:
SELECT * FROM
(
SELECT PersonId,
Note,
Amount
FROM Table1 A
UNION
SELECT PersonId,
Note,
Amount
FROM Table2 B
UNION
SELECT PersonId,
Note,
Amount
FROM Table3 C
) A
WHERE A.PersonId = @PersonId
首先,您将有一个查询优化器。
在速度上没有区别,因为PersonId在显示层上。
查询优化器将更改显示参数的执行顺序,以使参数的数量最少。
所以两个查询在速度上是相等的。
如果您感兴趣,可以在SQL开发程序中查看此执行计划。