添加索引后新数据查询速度慢,老数据速度快什么原因? ...
有没有遇到这样的问题:
在数据库里有出入库信息表InOutInfo,入库日期Indate,出库日期:OutDate,数据表约有100万条数据,之前按入库日期或出库日期查询时,查询速度越来越慢,后来在入库日期与出库日期建立索引,速度有很大改善。但是,只是对老数据有效,对新添加的数据,查询速度比之前还要慢,请问是什么原因?
比如今天是6月13日,我在这两个字段建立索引后,那查询今天的入库,过去某一天直到今天的入库,或是过去某一天的入库数据,查询速度都很快,1秒内。但到了明天,6月14日,入库表里有了新数据,我再查询14日的入库,或查询过去某一天直到14日的,速度都非常慢,几乎查不出,查询13日的,或者是过去某一天直到13日的,都很快。只有我在表里删除在Indate上建立的索引,重新再建立索引,速度又很快了,这到底是什么问题?请各位高手指点迷津!
这种情况有可能是你的统计信息更新不及时,使得你的索引虽然建立了,但是优化器没有“察觉”。以为没有建索引。优化器使用索引时,是需要一些统计信息作为依据的。所以合理地更新统计信息是很有用。可以每天晚上定一个作业维护统计信息,维护计划就有这个功能。并且最好做一个作业2、3天重建一下索引。