微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL 连接提示会影响行数吗?

如何解决SQL 连接提示会影响行数吗?

我在 sql 2016 SP2 上有一个 sql 视图,该视图连接了 14 个没有谓词的表。

                WHEN dsp.DimsourceSystemID=2 THEN edsp.CyberExposureGroup
                WHEN dsp.DimsourceSystemID=4 THEN vdsp.CyberExposureGroup
                ELSE 'UnkNown' END AS CyberExposureGroup    
       FROM     dwh.DimPolicy dsp
                INNER JOIN Eclipse.DimPolicyExt edsp
                ON dsp.DimEclipsePolicyExtID = edsp.DimEclipsePolicyExtID
                INNER JOIN VeLocity.DimPolicyExt vdsp
                ON dsp.DimVeLocityPolicyExtID = vdsp.DimVeLocityPolicyExtID
                INNER JOIN DWH.DimProgramme dp
                ON dsp.DimProgrammeID = dp.DimProgrammeID
                INNER JOIN DWH.DimPricingleaderStatus dpls
                ON edsp.DimPricingleaderStatusID = dpls.DimPricingleaderStatusID
                INNER JOIN DWH.DimPlacingBasis dpb
                ON dsp.DimPlacingBasisID = dpb.DimPlacingBasisID
                INNER JOIN DWH.DimCoverageBasis dcb
                ON dsp.DimCoverageBasisID = dcb.DimCoverageBasisID
            --INNER JOIN DWH.DimNeWrenewed dnr
            --  ON dsp.DimNeWrenewedID = dnr.DimNeWrenewedID
                INNER JOIN DWH.DimsubClass dsc
                ON edsp.DimsubClassID = dsc.DimsubClassID
                INNER JOIN DWH.DimstatsMinorClass dsminc
                ON edsp.DimstatsMinorClassID = dsminc.DimstatsMinorClassID
                INNER JOIN DWH.DimstatsMajorClass dsmajc
                ON edsp.DimstatsMajorClassID = dsmajc.DimstatsMajorClassID
                ----------------------R5--------------------------
                INNER JOIN DWH.DimCoverholder cv
                ON edsp.DimCoverholderID = cv.DimCoverholderID
            ----------------------R7--------------------------
                LEFT JOIN dwh.DimPlacingBasis MDPB
                ON MDPB.MasterDataPlacingBasis = edsp.MasterPlacingBasis
                INNER JOIN DWH.DimAssured da
                ON dsp.DimAssuredID = da.DimAssuredID
                --Underwriter information R15
                INNER JOIN DWH.DimUnderwriter duw
                ON dsp.DimUnderwriterID = duw.DimUnderwriterID

我想使用循环连接提示,以便查询具有较少的并行开销。

                WHEN dsp.DimsourceSystemID=2 THEN edsp.CyberExposureGroup
                WHEN dsp.DimsourceSystemID=4 THEN vdsp.CyberExposureGroup
                ELSE 'UnkNown' END AS CyberExposureGroup    
       FROM     dwh.DimPolicy dsp
                INNER LOOP JOIN Eclipse.DimPolicyExt edsp
                ON dsp.DimEclipsePolicyExtID = edsp.DimEclipsePolicyExtID
                INNER LOOP JOIN VeLocity.DimPolicyExt vdsp
                ON dsp.DimVeLocityPolicyExtID = vdsp.DimVeLocityPolicyExtID
                INNER LOOP JOIN DWH.DimProgramme dp
                ON dsp.DimProgrammeID = dp.DimProgrammeID
                INNER LOOP JOIN DWH.DimPricingleaderStatus dpls
                ON edsp.DimPricingleaderStatusID = dpls.DimPricingleaderStatusID
                INNER LOOP JOIN DWH.DimPlacingBasis dpb
                ON dsp.DimPlacingBasisID = dpb.DimPlacingBasisID
                INNER LOOP JOIN DWH.DimCoverageBasis dcb
                ON dsp.DimCoverageBasisID = dcb.DimCoverageBasisID
            --INNER JOIN DWH.DimNeWrenewed dnr
            --  ON dsp.DimNeWrenewedID = dnr.DimNeWrenewedID
                INNER LOOP JOIN DWH.DimsubClass dsc
                ON edsp.DimsubClassID = dsc.DimsubClassID
                INNER LOOP JOIN DWH.DimstatsMinorClass dsminc
                ON edsp.DimstatsMinorClassID = dsminc.DimstatsMinorClassID
                INNER LOOP JOIN DWH.DimstatsMajorClass dsmajc
                ON edsp.DimstatsMajorClassID = dsmajc.DimstatsMajorClassID
                ----------------------R5--------------------------
                INNER LOOP JOIN DWH.DimCoverholder cv
                ON edsp.DimCoverholderID = cv.DimCoverholderID
            ----------------------R7--------------------------
                LEFT LOOP JOIN dwh.DimPlacingBasis MDPB
                ON MDPB.MasterDataPlacingBasis = edsp.MasterPlacingBasis
                INNER LOOP JOIN DWH.DimAssured da
                ON dsp.DimAssuredID = da.DimAssuredID
                --Underwriter information R15
                INNER LOOP JOIN DWH.DimUnderwriter duw
                ON dsp.DimUnderwriterID = duw.DimUnderwriterID

这有效并且查询运行得更快,但会以更多 IO 为代价,但是令我惊讶的是,对于两个不同版本的视图,我得到的行数略有不同。 7,877,287 行对比 7,285 行。这是一个数据仓库,但没有插入。那么连接提示是否会影响总行数,或者这可能是一个错误

解决方法

好的,我实际上已经弄清楚问题出在哪里 - 这是 SSMS 中的错误!我使用的是 SSMS 18.6,右下角显示的行数不正确。如果你真的看结果选项卡中的行数,那么它们确实对应,也就是说连接提示没有区别,这是有道理的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。