在某个时间范围内搜索一天时,哪个日期比较更有效?



当查询表以获取一天的数据时,我发现了 2 个选项。

假设我想获取 2020-01-01 的所有数据和名为"创建日期"的日期列,这是一个日期时间。

我的"哪里"可以是:

Where CreatedDate between '2020-01-01' and '2020-01-02'

但是,我开始使用以下格式:

Where CAST(CreatedDate as date) = '2020-01-01'

我发现 2 选项更"友好",因为我正在与更具可读性的单个值进行比较。

我想知道需要转换的格式是否可能会花费更多的计算资源并增加查询量?

他们做不同的事情。 第一个在 2020-01-02 午夜获取数据。 等效逻辑为:

where CreatedDate >= '2020-01-01' and
CreatedDate < '2020-01-02'

至于您的问题,您应该在数据和系统上测试这两个版本。 这两个版本都将在(CreatedDate)上使用索引,因为 SQL Server 允许使用索引转换为日期。 从使用索引的角度来看,它们是等效的。

也就是说,如果没有索引,日期转换可能会有轻微的开销,因此在这种情况下,第二个版本可能会慢一点。

最新更新