WHERE大于给定的datetime来减少查询的行

时间:2015-03-26 17:32:31

标签: sql tsql sql-server-2014

我有一个存储过程,它根据给定的文本搜索表中的行。 TableWithText有一个类型为nvarchar的SomeText列,还有一个CreateDate DateTime列,其中填充了创建该行的日期和时间。

存储过程的主体是:

SELECT TableWithTextID, SomeOtherColumn 
FROM TableWithText 
WHERE SomeText = @inputText

尽管没有施加这样的约束,但每个SomeText的值保证是唯一的。因此,该语句预计只返回一行。

然而,该表有大约500,000行。鉴于我知道我正在寻找的行(直到分钟),如果我添加

AND CreateDate >= @CreateDate

到存储过程,MS SQL查询优化器是否会在搜索输入文本之前将查询行数减少到@CreateDate之后创建的查询行数?

2 个答案:

答案 0 :(得分:1)

最好的办法是查看执行计划并查看优化程序告诉您的内容。您可能只是通过查看查询和行数来确定存在问题,但实际成本非常低。

如果你已经在CreateDate上有一个索引,那么将它添加到where子句,它应该利用它。

否则,如果这是运行很多的东西并且在执行此操作时注意到全表扫描,那么最好将索引SomeText字段。我猜它是在其他查询中使用的两个,因为它是一个独特的东西?

答案 1 :(得分:0)

是的,可能,但只有在CreateDate列上添加索引(或SomeText,CreateDate上的索引)