我有一个查询(简化),它计算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
有更好的方法吗?
我尝试过嵌套查询,它也一样。
答案 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