mysql 百万数据 查询_MySQL百万数据查询优化

问题来源:

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

对比分析:

初始数据:

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

查询sql:

EXPLAINSELECT count(id) from t_summary_minute

结果:

f161f0774b7ceff824775544fdb7c942.png

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

3baa452272de0a081b64b5a635cca938.png

未使用到索引

解决方式:

为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"

19941fdcef90eb7c8c4b65b12ea1440d.png

这次使用到了索引

扩展:

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

建立索引:

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语句来实现。DROPINDEX可以在ALTER TABLE内部作为一条语句处理,其格式如下:drop index index_name ontable_name ;alter table table_name drop indexindex_name ;alter table table_name drop primary key;eg: alter table t_summary_minute drop index index_test_update_time ;

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值