如何提高海量数据查询汇总的效率?

老白老白了 2007-09-07 03:25:53
数据库是MSSQL2005,有一张表有四百多万条记录,表结构为:
ID,类别,访问时间
现在要统计某段时间内每个类别的访问量,我写的sql语句是

select 类别,count(1) as 访问量 from 数据表
where 访问时间 between '2007-9-1' and '2007-9-7'
group by 类别

这个语句执行的巨慢,大约要3分多钟才能执行完,请问各位大侠有没有效率高一些的方法呢,多谢啦
...全文
320 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
erif1001 2008-03-24
  • 打赏
  • 举报
回复
关注
老白老白了 2007-09-07
  • 打赏
  • 举报
回复
多谢各位大侠的答复,我对访问时间和类别建立了非聚集索引,暂时解决的问题,呵呵,不知当数据达到1000万或更多时应该怎么办啦,再次感谢各位帮助,结贴
SoftwKLC 2007-09-07
  • 打赏
  • 举报
回复
select 类别,count(1) as 访问量 from 数据表
where 访问时间 between '2007-9-1' and '2007-9-7'
group by 类别
----------
你写的这个语句是没有优化的余地了,如果你想提高查询效率的话
可在[访问时间]列建立非聚簇索引
不知LZ你对这张表插入和更新频不频繁???
(索引可提高查询效率,但同时又减慢插入或更新的效率)
fa_ge 2007-09-07
  • 打赏
  • 举报
回复
访问时间 不知有沒有建立索引啊?

select 类别,count(1) as 访问量 from 数据表
where 访问时间 between '2007-9-1' and '2007-9-7'
group by 类别

這段話,比較簡單,也沒有什麼優化了,有建索引要更快些
Limpire 2007-09-07
  • 打赏
  • 举报
回复
400万的数据量,其实并不算多,应该不至于要3分钟,保守估计1分钟之内应该解决问题。
Limpire 2007-09-07
  • 打赏
  • 举报
回复
select 类别,count(ID) as 访问量 from 数据表
where 访问时间 between '2007-9-1' and '2007-9-7'
group by 类别

/*
有高手说count(主键)会快点
访问时间应该加个非聚集索引
*/
WangZWang 2007-09-07
  • 打赏
  • 举报
回复
sql2005可以对表数据进行分区,你可以对这张表的“访问时间”按年或者月来进行分区,并建立相应索引,速度应该还可以

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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