时间字段过滤的问题?

youzhj 2011-11-04 10:33:42
表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
请问这个查询语句怎样写效率最高?
...全文
84 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
快溜 2011-11-04
  • 打赏
  • 举报
回复
你写的很好
youzhj 2011-11-04
  • 打赏
  • 举报
回复
好的,谢谢,索引我倒是建立了。[Quote=引用 5 楼 fredrickhu 的回复:]

引用 3 楼 youzhj 的回复:
想想也是,也没有别的什么好办法。
那条件的先后次序呢?
Rdt between @sDt1 and @sDt2

可以改成 rdt>=@sdt1 and rdt<=@sdt2

这样的话在 RDT上建立索引 有效
[/Quote]
--小F-- 2011-11-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 youzhj 的回复:]
想想也是,也没有别的什么好办法。
那条件的先后次序呢?
[/Quote]Rdt between @sDt1 and @sDt2

可以改成 rdt>=@sdt1 and rdt<=@sdt2

这样的话在 RDT上建立索引 有效
-晴天 2011-11-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 youzhj 的回复:]
想想也是,也没有别的什么好办法。
那条件的先后次序呢?
[/Quote]

把 Kid 放到最前面测试对比一下.
不过,关键恐怕是索引要建好.
youzhj 2011-11-04
  • 打赏
  • 举报
回复
想想也是,也没有别的什么好办法。
那条件的先后次序呢?
--小F-- 2011-11-04
  • 打赏
  • 举报
回复
也就差不多这样了 因为你要取秒和分 需要用到函数。 没什么好办法
youzhj 2011-11-04
  • 打赏
  • 举报
回复
我的代码是怎样的,但是我总觉得效率不高啊,帮忙看看

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

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧