我试图了解Sql Server如何处理视图中的视图和连接。
我有类似的观点。
CREATE VIEW
[dbo].[vw_Product]
AS
SELECT
Product.Id AS ProductId,
Customer.Name AS CustomerName
FROM
Product
INNER JOIN
Customer ON Customer.Id = Product.CustomerId
以下两个查询在性能方面有何区别?
SELECT ProductId, CustomerName FROM vw_Product
SELECT ProductId FROM vw_Product
提出此问题的原因是第一个查询选择了CustomerName。在视图中,Customer表上有一个Inner Join。内部联接执行会对性能产生额外成本。
答案 0 :(得分:1)
无论是从单个表还是多个表中选择列,都始终执行JOIN。所以我会说差异可以忽略不计
答案 1 :(得分:1)
基本上第二个查询会慢一点,因为SQL Server返回的数据包含额外的列。在这两种情况下都会发生INNER JOIN
。