我在表中有一个名为CreatedOn的Datetime列。 CreatedOn也是订单下降的非聚集索引的一部分。
以前在那里我的条件如下
WHERE DateDiff(d,CreatedOn,GetDate()) < 180 AND ... other conditions
我将此更改为
WHERE CreatedOn > '2012-04-04 00:00:00.000' AND ... other conditions
我在C#代码中计算截止日期,然后将其放入adhoc查询中。
据我所知,第二个条件应该更快,但我还没有看到查询执行时间的重大变化。但随着桌子大小的增加,哪一个会跑得更快?
答案 0 :(得分:6)
第二种形式。
在列上放置函数会使索引的使用无效(几乎在所有情况下,所以只需遵循此规则)。见"Ten Common SQL Programming Mistakes",第2期