gsh*_*arp 0 t-sql sql-server union sql-server-2012
假设我有这样的视图
CREATE VIEW MyView
AS
SELECT Id, Name FROM Source1
UNION
SELECT Id, Name FROM Source2
Run Code Online (Sandbox Code Playgroud)
然后我查询视图
SELECT Id, Name From MyView WHERE Name = 'Sally'
Run Code Online (Sandbox Code Playgroud)
SQL Server内部将首先从Source1和Source2中选择所有数据,然后应用where或将它放在每个Select语句的位置?
SQL Server 可以根据需要移动谓词以优化查询.视图实际上是在优化发生之前扩展到查询主体的宏.
它在任何特定情况下的作用都不是100%可以预测 - 因为在SQL中,你告诉系统你想要什么,而不是如何去做.
对于这样一个简单的例子,我会想到它来评估对基表的谓词,然后进行结合,但仅限于查询计划的检查你的数据库,你的表和索引可以回答是肯定的问题.