不同的查询具有相同的执行计划

时间:2018-07-11 20:08:30

标签: sql-server sql-server-2008 sql-server-2000 sql-server-2016 sql-execution-plan

我正在将SQL Server 2000中运行的某些查询的语法更新为SQL Server2016。有问题的查询使用的语法非常旧(* =)。在运行旧代码和新代码之后,我具有相同的结果,相同的执行计划,但是我想知道我所做的“翻译”是否正确。

有人可以解释为什么不同的查询具有相同的执行计划吗?我看到了相反的情况,但这对我来说是新的。

我写的查询是否等同于旧查询?请不要专注于表名,而要关注表的正确联接。

这是我所拥有的:

Select 
    Count(*) As Cnt 
From 
    FNFItemFat, FUnidade, FNCM, FSitTributaria, 
    FTipoIPI FK_FNFITEMFAT_FTIPOIPI1, FNotaFiscalFat NOTA1 
Where 
    NOTA1.CodNFInsumos = fNFItemFat.CodNFInsumos 
    and FNFItemFat.CodNCM *= FNCM.CodNCM 
    and FNFItemFat.CodSitTrib = FSitTributaria.CodSitTrib 
    and FNFItemFat.CodUnidade = FUnidade.CodUnidade 
    and FNFItemFat.CodTipoIPI = FK_FNFITEMFAT_FTIPOIPI1.CodTipoIPI

这是我所做的:

Select 
    Count(*) As Cnt 
From 
    FNFItemFat fNFItemFat
Inner Join 
    FNotaFiscalFat NOTA1 on NOTA1.CodNFInsumos = fNFItemFat.CodNFInsumos
Left Join 
    FNCM fNCM on fNCM.CodNCM = fNFItemFat.CodNCM
Inner Join 
    FSitTributaria fSitTributaria on fSitTributaria.CodSitTrib = fNFItemFat.CodSitTrib
Inner Join 
    FUnidade fUnidade on fUnidade.CodUnidade = fNFItemFat.CodUnidade
Inner Join 
    FTipoIPI FK_FNFITEMFAT_FTIPOIPI1 on FK_FNFITEMFAT_FTIPOIPI1.CodTipoIPI = fNFItemFat.CodTipoIPI

0 个答案:

没有答案