开发者社区> 问答> 正文

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

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

假设我要获取2020-01-01的所有数据以及名为“ CreatedDate”的日期列,它是一个日期时间。

我的“哪里”可以是:

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

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

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

我发现2选项更“友好”,因为我正在与更易读的单个值进行比较。

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

展开
收起
祖安文状元 2020-01-03 16:07:49 595 0
1 条回答
写回答
取消 提交回答
  • 他们做不同的事情。第一个在2020-01-02午夜获取数据。等效逻辑为:

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

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

    就是说,如果没有索引,则日期转换可能会略有开销,因此在这种情况下,第二个版本可能会慢一些

    2020-01-03 16:08:10
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载