表达式的未使用部分是否已计算?

时间:2015-07-24 16:49:48

标签: tsql sql-view

假设我的SQL Server视图定义如下:

CREATE VIEW V_Test1 AS
SELECT ColumnA, ColumnB
FROM Table1

然后我将另一个视图定义为:

CREATE VIEW V_Test2 AS
SELECT ColumnA
FROM Table1

考虑到视图只是一个表表达式,并且甚至没有调用ColumnB,这两个语句是否会被同等优化?如果ColumnB不在Table1中,而是复杂逻辑或调用另一个函数的结果怎么办?

SELECT ColumnA FROM V_Test1
SELECT ColumnA FROM V_Test2

1 个答案:

答案 0 :(得分:1)

是的,在Microsoft SQL Server中,它们将具有相同的执行计划。您甚至可以编写一个导致错误进入ColumnB的表达式(例如“1/0”),它将不会被执行。