sql怎么写才能执行的更快一些

Z_X_S_ 2012-03-28 04:17:53
我现在有5000000多万条数据 我要查询的条件有group by 还有where条件 在查询的时候要有sum统计 请各位经验多的高手帮帮忙 目前写sql是这样的 请高手帮忙改改
select [字段] as [新值] ,sum([字段]) as [数量] ....from [表名]
where [字段]=值 and [字段]=值....
group by [分组字段]

求求大家帮帮忙!!!!!!小弟在这先谢过
...全文
142 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leon_He2014 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

到目前为止 我的数据变成4亿 现在可愁死我了
[/Quote]
存放
1. 用分区表
2.或者根据时间分别存放到不同表,估计你这个得一天存一个表了。然后在各个表上统计。
统计
把where条件对应的记录select到一个临时表,然后在临时表上统计
IT-Style 2012-04-09
  • 打赏
  • 举报
回复
创建分区表以及建立索引
海量数据查询优化:http://www.cnblogs.com/summer_adai/archive/2011/11/11/2245406.html
黄_瓜 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

到目前为止 我的数据变成4亿 现在可愁死我了
[/Quote]
我擦 这增长速度很猛啊。。
勿勿 2012-04-09
  • 打赏
  • 举报
回复
可以考虑表分区
Z_X_S_ 2012-04-09
  • 打赏
  • 举报
回复
到目前为止 我的数据变成4亿 现在可愁死我了
黄_瓜 2012-03-28
  • 打赏
  • 举报
回复
where 条件后面的字段有要有索引
表本身必须有主键,没有主键的表,普通索引的利用率会非常低


不要被500w 给吓倒了
wzhiyuan 2012-03-28
  • 打赏
  • 举报
回复
500w 直接统计再怎么写,索引再怎么优化,速度也快不了,而且对服务器的压力也比较大

如果500W的数据不是经常更新,可以将统计结果存到一个表里,
然后在原表上建一个更新触发器,原表有更新时,直接更新统计结果表



比如你这个表是存的500万人的存款资料,你经常需要按表的某个字段比如省份统计各省存款总额,
那么你第一次将统计结果存入一个结果表里(字段:1,省份,2,存款总额),
如果原表有人更新存款,那么就计算一下他的更新相比较原来是增减了多少,然后直接将差值加入结果表里这个省份的行里就行了

快溜 2012-03-28
  • 打赏
  • 举报
回复
按条件过滤出来放在临时表里试试,或者统计一次,把结果记录起来下次统计新数据合并旧数据,或者把500w的表分区为多个表,统计相加。
  • 打赏
  • 举报
回复
给where,group by后面的字段加上索引。
Z_X_S_ 2012-03-28
  • 打赏
  • 举报
回复
目前我就想在这500w里面查找数据怎么能快那
Z_X_S_ 2012-03-28
  • 打赏
  • 举报
回复
楼上能不能 说的子明白一点
快溜 2012-03-28
  • 打赏
  • 举报
回复
500w可以统计频繁的话可以选择分区统计

22,209

社区成员

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

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