問題來源:
在查詢統計的業務中做了一個小型的每隔一分鍾的統計服務,實現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 ;
建立索引須謹慎, 查詢與插入跟索引都有關系