有个二百多万的数据表,十多个字段,经常会通过条件和分组查询,也可能经常十多个字段分组查询,数据库是SQL Server 2005,现在十多个字段同时分组时就要1分多钟,麻烦大家帮帮忙

解决方案 »

  1.   

    就是有个二百多万的销售数据表,需要通过web形式提供给分析人员,他们可以通过字段条件和字段分组灵活的统计分析销量,现在十多个字段同时分组统计销量时特别的慢大概要1分多钟,四五个字段分组加条件也都不是很快
      

  2.   

    建立好索引
    优化sql语句
    其实200W数据真的不大
      

  3.   

    这个非常可取。200w并不是多大的数据量。
    建立好索引
    优化sql语句
    这两个很重要。
      

  4.   

    建立索引,分页查询数据
    SQL语句
      

  5.   


    十多个字段做分组统计,这就要看你对数据实时性的要求了如果你要求任意时间都是精确统计,那没别的办法,只能这么做如果不是要求实时的,那可以建一个统计结果表,然后建一个JOB定期把统计结果写进去
    查询的时候直接查统计结果表就好了。
    至于这个JOB多少时间跑一次,就看你的需求了,可以是一天,也可以两个小时。
      

  6.   


    如果是需要灵活,那么就要牺牲性能
    如果是要提高性能,那就要牺牲点灵活性:比如固定某些字段进行统计,把统计结果放到另外的表,不接受实时统计等等。这个是一对矛盾。当然,对于200W数据,要都解决也有办法
    配上32G内存,4颗物理CPU(每个四核),闪存硬盘的服务器,你也可以同事解决灵活性和性能的问题
      

  7.   

    用sql server analysis services
      

  8.   

    我也发现了,查询时,cpu和内存利用率都不是很高,硬盘特别高
      

  9.   

    客户关心的没有几个
    还有,你别用模糊查询  like '%%'
    那样索引无效
      

  10.   

    信关二哥。。没错的。。还有耿三弟有一些意见:
    1.分页。。select top pagesize
    2.缓存呢?
    3.建一个表专门用作索引字段的。。
      

  11.   

    补充:查出来的结果(不排序、不分组)放临时表里,对临时表进行分组等操作。
    另外,进来别join尤其是outer join。为了减少join,设计时可以考虑必要的冗余。