SQL SERVER中有个海量表,目前有3000W条记录建了相关索引后,我用SQL2000和SQL20005都查询了下现在连COUNT都会超时,更不提其他查询语句了谁接触过海量数据啊,请问该怎么处理呢

解决方案 »

  1.   

    首先,不要在线测试数据。万一有人在insert,你再count,多半会阻塞的。
    其次,分析你用的语句和索引,没有优化好吧?我这边2000万的数据,没感觉那么差劲啊。
    相反倒是一个10来万的表,访问太频繁了,搞的动不动就block,晕死了
      

  2.   

    建立只包含一个列的聚集索引,再试试Count(*).
      

  3.   

    bugchen888(臭虫) count(*)超时
      

  4.   

    在SQL Server2000中使用分区视图是比较麻烦的事情,建议将数据进行分流,将一个表的数据根据某个关键字来区分,进行局部查询,可以提高效率。
    如果建立索引,会导致系统在插入数据的时候性能降低,但可以提高检索的性能,其中的优缺点,你可以通过查询分析器的执行计划来检测。
    我们这里有一个表每天的记录也是成百万的增长的,我们最终的处理方式,将每天的数据利用作业进行分流,再建一个新数据库专门存放这一个表的数据,表名就是日期,将记录分流后,在原表中将已经分流的数据删除,查询的时候,根据日期去查询,当然这是我们的业务所决定的,你的业务不知道能不能这样去处理。
      

  5.   

    先重建索引,若性能没有太大的改善就采用libin_ftsafe(子陌红尘)的方法!
      

  6.   

    建立一个聚集索引,然后再多建几个非聚集索引试试看,我在里是4000w条记录的表,count(*)也就30秒左右!
      

  7.   

    INDEX的問題
    去掉TRIGGER
    我這邊2000W,訪問量很大,沒有問題
    當然還要看你SERVER的級別的
      

  8.   

    这么大的数据建立分区表是肯定的.还有最好建立一个新表,用于存放分区数据的记录集总数,这样下次就不用count而是直接从另一个表中获取相应分区数据集总数了。大概思想就是这样。具体怎么实施要看你的表结构了。应该把你的表结构拿出来。要不说什么都并非准确的。