3

我在表中有一个名为 CreatedOn 的日期时间列。CreatedOn 也是降序排列的非聚集索引的一部分。

以前在 where 条件下,我的条件如下

WHERE DateDiff(d,CreatedOn,GetDate()) < 180 AND ... other conditions

我把它改成了

WHERE CreatedOn > '2012-04-04 00:00:00.000' AND ... other conditions

我在 C# 代码中计算截止日期,然后将其放入临时查询中。

据我说,第二个条件应该更快,但我还没有看到查询执行时间有显着变化。但是随着表的大小增加,哪一个会运行得更快呢?

4

1 回答 1

6

第二种形式。

将函数放在列上会使索引的使用无效(在几乎所有情况下,因此始终遵循此规则)。请参阅“十大常见 SQL 编程错误”,第 2条

于 2012-04-05T12:13:42.737 回答