Sql server SQL性能优化。哪个查询更好?

Sql server SQL性能优化。哪个查询更好?,sql-server,Sql Server,我有一个select SATETION,它的联接条件大于或等于 以下哪项查询将具有更好的性能 SELECT Id.[Id],id.[IdentityGuid],Id.LastUpdated, Id.[DisabledDate], Id.[DeletedDate], ip.[Hash] FROM [IDTable] id LEFT OUTER JOIN PHTable ip ON ip.IdentityId = id.Id AND i

我有一个select SATETION,它的联接条件大于或等于

以下哪项查询将具有更好的性能

SELECT Id.[Id],id.[IdentityGuid],Id.LastUpdated, Id.[DisabledDate], Id.[DeletedDate], ip.[Hash]
                FROM [IDTable] id
                LEFT OUTER JOIN PHTable ip ON ip.IdentityId = id.Id AND ip.type= 3 AND ip.[ModifiedDate]>=
                CASE WHEN @modifiedSince is not null then @modifiedSince ELSE ip.[ModifiedDate]
WHERE id.EtId = @tId AND (@modifiedSince is null OR id.[LastUpdated] >= @modifiedSince OR ip.[ModifiedDate]>= ip.[ModifiedDate])

在这样的语句中使用Case

ip.[ModifiedDate]>=CASE WHEN @modifiedSince is not null then @modifiedSince ELSE ip.[ModifiedDate] END
(@modifiedSince is null OR ip.[ModifiedDate]>= @modifiedSince)
还是像这样

ip.[ModifiedDate]>=CASE WHEN @modifiedSince is not null then @modifiedSince ELSE ip.[ModifiedDate] END
(@modifiedSince is null OR ip.[ModifiedDate]>= @modifiedSince)

当参数
@modifiedSince
NULL
(ie)可选筛选器时,您正在尝试提取所有记录

首先,当您在
ip.[ModifiedDate]
列中有
NULL
值时,这两种方法都不会产生相同的结果


如果
ip.[ModifiedDate]
中没有任何
NULL
值,那么我认为第二种方法看起来更干净一些。性能方面,两者的执行时间应该相似

ip.[ModifiedDate]>=当@modifiedSince不为null时,@modifiedSince END
这会给我sme结果吗???@Manu-你可以这样做
isnull(ip.[ModifiedDate],'1900-01-01')>=当@modifiedSince不为空时,则@modifiedSince ELSE为空(ip.[ModifiedDate],'1900-01-01')结束
,但当有更简单的方法时,为什么需要它呢。这不会在
ModifiedDate
列中显示任何索引