我必须对托管在 MSSQL 服务器中的数据库表进行查询。
查询如下:
select *
from tableA
where createdOn between @startDate and @endDate
变量@startDate 和@endDate 的类型是日期时间。如果@endDate 等于当前日期并且@startDate 等于前一个月的日期,我认为我们可以将查询设为
declare @startDate datetime
declare @endDate datetime
set @startDate = DATEADD(month,-1,GETDATE())
set @endDate = GETDATE()
select *
from tableA
where createdOn between @startDate and @endDate
或作为
select *
from tableA
where createdOn between DATEADD(month,-1,GETDATE()) and GETDATE()
我认为第一个查询会比第二个更快,因为在第二个查询中我们调用 where 子句中的函数。我写了我的查询的两个版本,我也执行了它们。但是,我没有注意到性能上有任何显着差异。
有人可以解释一下为什么我没有看到任何变化。也许认为第一个查询应该比第二个查询更快是错误的。请让我知道,id是这样,为什么是错误的。
提前感谢您的帮助。