2017-09-05 44 views
-2

我想查询SQL中的大数据集 - 哪种方法是正确的?SQL:查询大表

declare @datetime Datetime 

select * 
from sales 
where salesdate <= @datetme 

或:

select * 
from sales 
where salesdate < (select GetDate()) 

或:使用

select * 
from sales 
where salesdate < GetDate() 

NOW()

+2

假设您正在使用SQL Server:如果这些查询之间存在任何差异,我会**很**。 –

+0

不知道性能 –

+4

是的。我们认为这种表现不会有所不同。 –

回答

1

Select * from sales where salesdate < GetDate()似乎做它,它少SQL比Select * from sales where salesdate < (Select GetDate())最合乎逻辑的方式声明第一个选项的变量没有多大意义如果你只运行一次性查询,如果你打算使用这个或者在一个存储过程中,那么添加这个变量是有道理的。

但是看执行计划,看看它的性能比0%ASSIGN阶段其他的最佳

6

所有这三个都会有相同的执行计划变量查询没有。但是从长远来看,这将是一个很好的做法,总是将变量初始化为DATETIME,然后用于比较。如果通过这种方式进行长时间比较,用户将习惯于将日期时间格式化为变量,并将列与这些变量进行比较。否则,它会变成格式化SQL列,然后与日期共同映射的习惯。在每个数据行中格式化日期时间字段以与值进行比较,并使日期时间比较变慢。

对于此特定查询,为了便于阅读和使用,您可以选择查询号码。 3 [选择* from sales where salesdate < GetDate()]。