SQL:查询大表

Moh*_*han -2 sql sql-server query-performance

我想在SQL中查询大型数据集 - 这是正确的方法吗?

declare @datetime Datetime

select * 
from sales 
where salesdate <= @datetme
Run Code Online (Sandbox Code Playgroud)

要么:

select * 
from sales 
where salesdate < (select GetDate())
Run Code Online (Sandbox Code Playgroud)

要么:

select * 
from sales 
where salesdate < GetDate()
Run Code Online (Sandbox Code Playgroud)

或者通过使用 NOW()

Ami*_*mit 6

对于查询号中的变量,除了0%ASSIGN阶段之外,所有三个都将具有相同的执行计划.但是从长远来看,总是将变量初始化为DATETIME然后用于比较,这将是一个很好的做法.当您进行长时间的比较时,用户将习惯在变量中格式化日期时间并将列与这些变量进行比较.否则,它成为格式化SQL列的习惯,然后将其与日期一起进行映射.这会格式化每个数据行中的datetime字段以与值进行比较,并使日期时间比较变慢.

对于此特定查询,为了便于阅读和使用,您可以选择查询号.3 [从销售中选择*salesdate <GetDate()].