数据库表中有数据2千多万条,从中查了三百多万条数据用了三分多,感觉很慢啊。 如何能加快速度啊。

解决方案 »

  1.   

    select sensorid,maxwl,minwl,midwl,senddate from originaldatas where senddate between 'dt1' and 'dt2' order by senddate. 我在senddate上加了索引了。。但效果不是很明显啊!
      

  2.   

    如果这个索引是clustered index, 那么300W 条数据的扫描时间也是必不可少的
    如果这个索引不是clustered index, 那么300W条数据很可能要读所有的页建议
    检查query plan,是否从senddate的index上进行了index scan, 如果没有,说明几乎要读所有的page; 如果sendate上的index不是clustered,改成clustered; 如果可以改成clustered index, 用row_number()来实现分页, 300W数据没有必要一次返回,可以先返回部分数据, 分几次返回, index scan可以保证是排好序的; 如果不能改成clustered index, 将日期条件的between范围缩小,比如到原先的1/100, 然后多次用不同的between范围运行查询, 注意检查确保query plan是通过sendate上的index进行了读取,这样才能保证结果是排序的。