Sql server SQL优化where子句

Sql server SQL优化where子句,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我们可以做一些不同的事情,而不是在where子句中使用函数 DateAdd需要时间我想性能很差 如何优化这个sql SELECT cust_id, order_date, price FROM customers WHERE DATEADD(DD,50,order_date)>=GETDATE() 不要在order\u date上运行函数,而是在getdate()上运行相反的函数 select cust_id, order_date, price from customers where

我们可以做一些不同的事情,而不是在where子句中使用函数

DateAdd需要时间我想性能很差

如何优化这个sql

SELECT cust_id, order_date, price
FROM customers
WHERE DATEADD(DD,50,order_date)>=GETDATE()

不要在
order\u date
上运行函数,而是在
getdate()
上运行相反的函数

select cust_id, order_date, price
from customers
where order_date>=dateadd(Day,-50,getdate())
order\u date
的函数调用将导致索引扫描,如果改为对筛选条件
getdate()
运行函数,则可以在此列上保留索引搜索。(如果有索引)


是的,如果您在order_date列上创建索引,其中order_date<=dateadd(Day,-50,getdate())或order_date>=dateadd(Day,-50,getdate()),则只需对当前日期进行一次计算。应该更快。@Sam在这种情况下,
dateadd(Day,-50,getdate())
将作为一个运行时常量处理,但要注意这类事情。有关更多信息,请参阅。@SqlZim这一条对我来说是新的,是的,你说得很对。谢谢你的信息,任何想知道更多的人也可以找到这个链接。