sql-server - 不同的查询相同的执行计划
问题描述
我正在将 SQL Server 2000 中运行的一些查询的语法更新到 SQL Server 2016。有问题的查询使用非常古老的语法 ( *= )。运行旧代码和新代码后,我得到相同的结果,相同的执行计划,但我想知道我所做的“翻译”是否正确。
有人可以解释为什么不同的查询具有相同的执行计划吗?我看到了相反的情况,但这对我来说是新的。
我写的查询是否等同于旧查询?请不要关注表名,而要关注表的正确连接。
这是我所拥有的:
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
解决方案
推荐阅读
- jquery - 即使使用引号,JQuery 也无法正确读取值
- angular - 哪些因素会影响产品的捆绑大小以及编译和构建以组织以下场景?
- amazon-s3 - 如何在 python 中解析 xml S3 存储桶
- android - 数据绑定 BR 在我的 mvvm 项目中的 notifyPropertyChanged 方法中不起作用
- r - 根据条件使用其名称作为字符串替换一列中的值
- flutter - TextField点击上的自定义对话框?
- makefile - GNU Make:根据单词列表创建通配符
- javascript - 按 $project 字段聚合和 $lookup
- php - Laravel Eloquent Query 使用 withCount 和 get([name as value])
- android - 迁移到 AndroidX 后无法实现 Room 库