表Tb(Rdt,f1,f2,f3,Kid),其中Rdt是日期字段,Kid是int字段。表里面有20G的数据。
现在给定一个Kid值,比如65,要查询出日期字段的分钟部分(即datepart(mi,Rdt)为整十,且秒部分为0的所有记录,也就是日期间隔为10分钟,比如:
2011-10-1 10:20:00
2011-10-1 10:30:00
2011-10-1 10:40:00
2011-10-1 10:50:00
2011-10-1 11:00:00
2011-10-1 11:10:00
请问这个查询语句怎样写效率最高?

解决方案 »

  1.   

    我的代码是怎样的,但是我总觉得效率不高啊,帮忙看看select Rdt,f1,f2,f3 from VoltForQ0
    where Rdt between @sDt1 and @sDt2 and datepart(ss,Rdt)=0 and datepart(mi,Rdt)%10=0 and Kid=@sKid
    order by Rdt
      

  2.   


    把 Kid 放到最前面测试对比一下.
    不过,关键恐怕是索引要建好.
      

  3.   

    Rdt between @sDt1 and @sDt2可以改成 rdt>=@sdt1 and rdt<=@sdt2这样的话在 RDT上建立索引 有效