【问题标题】:Between Date ranges query performance日期范围之间的查询性能
【发布时间】:2018-05-02 21:13:18
【问题描述】:

我有一个简单的查询来获取几个日期范围之间的日期。它运行大约 10 秒,但如果可能的话,我想提高它的性能。 提前致谢

declare @Fst_LY date, @Lst_LY date, @Fst_TY date, @Lst_TY date

----------------------------------------------
set @Fst_TY ='4/1/18'   --First day this year
set @Lst_TY ='4/30/18'  --Last day this year
----------------------------------------------
set @Fst_LY ='4/2/17'   --First day last year
set @Lst_LY ='5/1/17'   --Last day last year
----------------------------------------------

select distinct  hyp as H
    from myView
where       
([Contract] between  @Fst_LY  and  @Lst_LY)  or ([Contract] between @Fst_TY  and  @Lst_TY)) 

【问题讨论】:

  • 速度全看你的看法。
  • 请显示一个执行计划,并用您使用的任何数据库标记您的问题。
  • 谢谢。我无权访问执行计划。我正在使用 SQL Server

标签: sql sql-server performance between


【解决方案1】:

尝试使用 union 代替 or:

select  hyp as H
        from myView
    where       
     [Contract] between  @Fst_LY  and  @Lst_LY
    union  
    select  hyp as H
        from myView
    where       
     [Contract] between  @Fst_TY  and  @Fst_LY

【讨论】:

  • 如果没有重复或有重复数据可以尝试 UNION ALL。这将进一步加快处理速度
猜你喜欢
  • 1970-01-01
  • 2014-06-13
  • 2017-06-23
  • 2014-12-06
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多