假设我的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
答案 0 :(得分:1)
是的,在Microsoft SQL Server中,它们将具有相同的执行计划。您甚至可以编写一个导致错误进入ColumnB的表达式(例如“1/0”),它将不会被执行。