请教两种查询方法那种好?

duozo1985 2011-02-14 10:33:35
一个表:
id [int](自加1)
number [varchar(20)]
addtime [datetime]

数据量比较大,4千多万,现在想检索addtime在'2011-2-13' 到 '2011-2-14'为止的数据。两种方法那种比较好

方法一:select * from 表 where addtime >='2011-2-13' and addtime<'2011-2-14'

方法二:select top 1 @minID=id from 表 where addtime >='2011-2-13'
select top 1 @maxID=id from 表 where addtime >='2011-2-14'
select * from 表 where id>=@minID and id <@maxID

或者有没有更好的方法?
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
duozo1985 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sql77 的回复:]
引用 7 楼 duozo1985 的回复:
回复LS各位,但这个表每日不停有数据插入,加了索引怕不怕影响插入?而这个查询一天只做一两次

这是索引必须花费的代价
[/Quote]
是啊,所以就没有用索引了
SQL77 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 duozo1985 的回复:]
回复LS各位,但这个表每日不停有数据插入,加了索引怕不怕影响插入?而这个查询一天只做一两次
[/Quote]
这是索引必须花费的代价
duozo1985 2011-02-14
  • 打赏
  • 举报
回复
回复LS各位,但这个表每日不停有数据插入,加了索引怕不怕影响插入?而这个查询一天只做一两次
快溜 2011-02-14
  • 打赏
  • 举报
回复
没有加就加一下呗,索引不花钱。
SQL77 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 duozo1985 的回复:]
回1L,2L没有加任何索引,返回结果大概有50-60万左右
[/Quote]
根据你这的需要,ADDTIME加聚集即可(没考虑其他的查询)
duozo1985 2011-02-14
  • 打赏
  • 举报
回复
回1L,2L没有加任何索引,返回结果大概有50-60万左右
打一壶酱油 2011-02-14
  • 打赏
  • 举报
回复
先在 addtime 上建立索引,然后就用方法一就行了,肯定很快
SQL77 2011-02-14
  • 打赏
  • 举报
回复
看你的索引怎么加的??还有返回结果的数据量
快溜 2011-02-14
  • 打赏
  • 举报
回复
在addtime上加索引。

34,575

社区成员

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

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