zoukankan      html  css  js  c++  java
  • 添加索引后新数据查询速度慢,老数据速度快什么原因? ...

    有没有遇到这样的问题:
    在数据库里有出入库信息表InOutInfo,入库日期Indate,出库日期:OutDate,数据表约有100万条数据,之前按入库日期或出库日期查询时,查询速度越来越慢,后来在入库日期与出库日期建立索引,速度有很大改善。但是,只是对老数据有效,对新添加的数据,查询速度比之前还要慢,请问是什么原因?
    比如今天是6月13日,我在这两个字段建立索引后,那查询今天的入库,过去某一天直到今天的入库,或是过去某一天的入库数据,查询速度都很快,1秒内。但到了明天,6月14日,入库表里有了新数据,我再查询14日的入库,或查询过去某一天直到14日的,速度都非常慢,几乎查不出,查询13日的,或者是过去某一天直到13日的,都很快。只有我在表里删除在Indate上建立的索引,重新再建立索引,速度又很快了,这到底是什么问题?请各位高手指点迷津!

    这种情况有可能是你的统计信息更新不及时,使得你的索引虽然建立了,但是优化器没有“察觉”。以为没有建索引。优化器使用索引时,是需要一些统计信息作为依据的。所以合理地更新统计信息是很有用。可以每天晚上定一个作业维护统计信息,维护计划就有这个功能。并且最好做一个作业2、3天重建一下索引。

  • 相关阅读:
    Spring IoC 容器和 AOP
    MySQL 锁与事务控制
    MySQL 存储引擎的选择
    如何理解MySQL 索引最左前缀原则
    MySQL 索引
    Java 线程池
    Java多线程 ReentrantLock、Condition 实现生产者、消费者协作模式
    Java多线程并发中 CAS 的使用与理解
    Java多线程中协作机制
    Mysql-SQL生命周期-show profile
  • 原文地址:https://www.cnblogs.com/zhiji6/p/2965800.html
Copyright © 2011-2022 走看看