【发布时间】:2026-02-10 06:00:02
【问题描述】:
如果我将日期放在 WHERE 子句(第一个查询)或将相同的日期作为参数(第二个查询),为什么性能会有如此巨大的差异
--------/* Execution time 3 sec*/
select
tblNoteDiaries.DueDate,
col2,
col3
from MyTable
where CAST(tblNoteDiaries.DueDate as date) <= cast(getdate()as date) and cast( tblNoteDiaries.DueDate as date) >= CAST('2017-09-29' as DATE)
--------/* Execution time 10 sec*/
declare @DateFrom datetime = '2017-09-29',
@DateTo datetime = '2017-10-05'
select
tblNoteDiaries.DueDate,
col2,
col3
from MyTable
where CAST(tblNoteDiaries.DueDate as date) >= @DateFrom and cast( tblNoteDiaries.DueDate as date) <= @DateTo
我需要将此查询作为存储过程,在不降低性能的情况下使用日期参数的最佳方法是什么??
【问题讨论】:
-
你看到执行计划有什么不同吗?
-
最有可能是参数嗅探。执行计划会给你一个线索。
标签: sql-server performance tsql database-administration