如何高效执行300w以上条数据的统计?
我发现直接用sum 简直是令人发指了。。
所以先请教一下 sql不是很懂得。。

解决方案 »

  1.   

    就是sum啊。
      

  2.   

    给sum的字段加聚集索引使用T-SQL语句创建索引的语法:CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]     INDEX   index_name     ON table_name (column_name…)      [WITH FILLFACTOR=x]q       UNIQUE表示唯一索引,可选q       CLUSTERED、NONCLUSTERED表示聚集索引还是非聚集索引,可选q       FILLFACTOR表示填充因子,指定一个0到100之间的值,该值指示索引页填满的空间所占的百分比
    在stuMarks表的writtenExam列创建索引:USE stuDBGOIF EXISTS (SELECT name FROM sysindexes          WHERE name = 'IX_writtenExam')   DROP INDEX stuMarks.IX_writtenExam /*--笔试列创建非聚集索引:填充因子为30%--*/CREATE NONCLUSTERED INDEX IX_writtenExam     ON stuMarks(writtenExam)          WITH FILLFACTOR= 30GO
      

  3.   

    如果不是实时查询的话,最好将sum的结果放在数据库中,过一段时间再查一次!!不必实时查询.这样是最节约资源的办法,否则非常困难!! sum想优化,非常不容易!
      

  4.   

    既然涉及到了 SUM这样的聚合预算 那势必就要分组
    你可以在分组列上建立索引 当你的数据非常多的时候 建议你建立视图索引 
    这样对你的聚合运算时相当有好处的
      

  5.   

    1,主键IDENTITY(1,1) , 这个效果很好。
    2,GROUP BY 字段一定要索引。
    3,SQL2005+, 可以在存放数据时就用分区表存放。其实计算并不用多少时间 , 看你计算完了, 存储或者显示, 那个才叫时间啊。。
      

  6.   

    根据你的SQL语句建立适当的索引
      

  7.   

        优化SQL,优化索引,合理规划表结构,分区存储数据,当前数据与历史数据分离