0

我试图了解 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。Inner Join 执行对性能有额外的影响。

4

2 回答 2

1

无论您是从单个表中选择列还是从多个表中选择列,都始终执行 JOIN。所以我会说差异可以忽略不计

于 2013-11-06T10:52:08.550 回答
1

基本上第二个查询会慢一些,因为 SQL Server 返回的数据包含额外的列。在这两种情况下INNER JOIN都会发生。

于 2013-11-06T10:52:52.540 回答