sql2008 一个表有二千多万行数据,求数据优化
公司系统用的数据库是SQL2008,听说之前一个表的数据只有几百万的时候查询速度是非常快的,但到了今年11
月的时候这个表的数据已经有了二千多万行了,查询速度变的非常慢。
当然这个表的索引肯定是有的,偶尔也会做做DBCC dBReIndex
可能是SQL当一个表的数据行达到了千万级别时,查询速度受影响非常大吧
除了删除或转移部分表的数据外还有其它方法,还有其它方面优化来提高查询速度没?
求建议!!!!!!!!
------解决方案--------------------可以按照日期字段,进行分区,比如一个月一个分区。
另外:
听说之前一个表的数据只有几百万的时候查询速度是非常快的
能把你的查询语句,贴出来看看不,看这个语句的特征,从语句的级别能不能优化
------解决方案--------------------2000万不算大,如果你全表扫描,那当然越来越慢,具体看你的语句
------解决方案--------------------這個是要看你sql語句吧?
------解决方案--------------------我原来的公司,一个主要的业务表有超过1.5亿条记录,但是每次查询,做报表,基本上只会用到600-700w条数据,不会用整个表的所有数据。
所以建立了一个索引,速度非常快,而且还与其他的千万级别的大表进行关联,计算,基本上10秒内就能返回结果
------解决方案--------------------
那就可能是索引的碎片,或者是统计信息的不准确导致的。
------解决方案--------------------执行计划才能看出问题在哪里,我预估要么是进行了扫描,要么用了低效的JOIN算法,要么就是WHERE条件不够高效,如果你不贴执行计划,估计把问题会延长很久...很久...很久,然后就....没有然后了
------解决方案--------------------两个表进行关联的时候,建议先用条件分别作用于各个表,然后再将结果进行关联,这样速度比较快,个人觉得单张表2000W数据不算大,是一个合理的范围,如果超过千万级,到上亿级就需要考虑分区表,我们现在项目有个库里各张表的数据都是千万级的。
------解决方案--------------------2000万就要分区,
那让我们这些 5000万~上亿条的数据怎么办!
先不用分区,分析其他原因。
你说 用主表的时间字段做为条件,那查询出来的结果有多少条呢?
------解决方案--------------------2000W真不算多。还是着手查询优化吧。
------解决方案--------------------标志下 .