zoukankan      html  css  js  c++  java
  • MySQL百万数据查询优化

    问题来源:

      在查询统计的业务中做了一个小型的每隔一分钟的统计服务,实现1分钟,5分钟,1小时,2小时,一天,三天,一月,3月,一年的级联统计.前期数据来源表数据,以及生成的统计表数据都少; 数月之后,慢慢出现数据库连接的异常,以及做一次的统计可能出现了几分钟方可完成.后期采用主键的先做一次分离,以及分页,也是堪忧

      

    对比分析:

    初始数据:

    初始表的设计: id的主键自增

    查询sql:

    EXPLAIN
    SELECT count(id) from t_summary_minute

    结果:

     1847530的数据

    查询一分钟内的数据:

    EXPLAIN
    SELECT
    id,type,DAY,update_time,key_type from t_summary_minute where update_time<="2019-09-27 08:47:24" and update_time>="2019-09-27 08:47:23"

    查询时间:

    2.171s

     未使用到索引

    解决方式:

    为update_time添加索引:

    再次查询 ,查询时间减少到了 0.031s

    EXPLAIN
    SELECT id,type,DAY,update_time,key_type from t_summary_minute where update_time<="2019-09-27 08:47:24" and update_time>="2019-09-27 08:47:23"

     这次使用到了索引

    扩展:

    提供增加索引以及删除索引的方式:

    建立索引:

    ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index[索引名](字段名)
    eg: alter table t_summary_minute add INDEX index_test_update_time (update_time )

    删除索引:

    删除索引
         删除索引可以使用ALTER TABLE或DROP INDEX语句来实现。DROP INDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下:
    
    drop index index_name on table_name ;
    
    alter table table_name drop index index_name ;
    
    alter table table_name drop primary key ;
    
    eg: alter table t_summary_minute drop index index_test_update_time ;

    建立索引须谨慎, 查询与插入跟索引都有关系  

      

  • 相关阅读:
    CentOS7 FTP安装与配置
    EF CodeFirst 数据库的操作
    CentOS7 防火墙(firewall)的操作命令
    小程序学习(四)小程序逻辑层之注册页面
    小程序学习(三)小程序逻辑层的注册程序和场景值
    小程序学习(二)基本结构与文件的类型
    VS2015 无法启动IIS Express Web服务器(已解决)
    django 2.接口之工作原理
    django 1.开发接口环境搭建
    pytest 15 fixture之autouse=True
  • 原文地址:https://www.cnblogs.com/naimao/p/11864870.html
Copyright © 2011-2022 走看看