首页 > 解决方案 > SQL Server 如何分解视图代码并选择要提取的正确表?

问题描述

我在 SQL Server 2017 中遇到了有关视图的问题。

我正在对后面有多个基础表的视图运行查询。除了SELECT子句中涉及的表之外,其他表也被 SQL Server 逻辑读取,我想知道为什么。

这是场景:

/*******************************************************/
CREATE VIEW v_test
AS
SELECT 
    a.col1,
    a.col2,
    b.col3,
    b.col4,
    c.col5,
    c.col6,
    d.col7,
    d.col8,
    e.col9,
    e.col10,
    f.col11,
    f.col12,
    g.col13,
    g.col14
FROM  a
LEFT JOIN b
LEFT JOIN c
LEFT JOIN d
LEFT JOIN e
LEFT JOIN f
LEFT JOIN g

/*********************************************************/
SELECT col1, col2
FROM V_test

为什么是这样?

标签: sql-serverjoinview

解决方案


It is possible that rows from table A get eliminated or duplicated depending on all join conditions.
So to know how many rows should be returned all join conditions has to be evaluated in most cases.


推荐阅读