存储查询结果或使用嵌套查询

时间:2014-09-23 13:50:49

标签: sql-server tsql

我有一个查询(简化),它计算C

SELECT A + B AS C FROM Foo

查询返回50万行。

我需要选择C< 0.3。为此,我将结果插入临时表#Bar

INSERT INTO #Bar
SELECT A + B AS C FROM Foo

并应用条件

SELECT *
FROM #Bar
WHERE C < 0.3

根据执行计划Table Insert,费用为86%。获得C < 0.3有更好的方法吗? 我尝试过嵌套查询,它也一样。

3 个答案:

答案 0 :(得分:4)

您根本不需要临时表,只需选择您想要的内容:

SELECT A, B, C = A + B
FROM Foo
WHERE A + B < 0.3

答案 1 :(得分:1)

所有解决方案都可以正常工作。我刚刚添加了第三个选项,其中包含一个用于视图的公用表表达式,它更容易阅读。

;WITH CTE_SELECT AS
(
    SELECT A, B, C = A + B
    FROM Foo
    WHERE A + B < 0.3
)

SELECT * FROM CTE_SELECT

答案 2 :(得分:0)

您可以在单个查询中执行此操作,例如

SELECT C FROM
(
SELECT A + B AS C FROM Foo
) bar
WHERE C < 0.3

(OR)在WHERE

中包含条件
SELECT A + B AS C FROM Foo
WHERE A + B < 0.3