关于Display Estimated Execution Plan的两个问题
1、实现相同功能的不同SQL语句,分析出来的Estimated Operator Cost是不是一定是越小越好呢?
2、为什么我使用参数和使用值来分析相同的SQL语句,得到的执行计划是不同的呢?
例如:
Declare @Id uniqueidentifier
Set @Id = 'GUID'
Select * from table t1
inner join table t2 on ... and t1.Id = @Id
inner join table t3 on ...
where Id = @Id and ...
与
Select * from table t1
inner join table t2 on ... and t1.Id = 'GUID'
inner join table t3 on ...
where Id ='GUID'and ...
得到的执行计划不同,为什么呢?不适用参数设置的,在执行计划中可以看到有Key Lookup操作,而使用参数设置的就不会有这步操作。并且不适用参数设置的Estimated Operator Cost只有使用参数设置的2%左右,运行起来也是有明显的性能差别。
希望得到各位的指点,多谢!