最近遇到个小坑,《数据库表不断插入新数据,但是读表操作却越来越慢》。
原因:
之前的表结构中没有加入所需条件的索引字段,这样每次查询表的时候都是全表扫描;
EXPLAIN SELECT * FROM api_performance WHERE time_stamp='1500899762.0' ORDER BY id DESC ;
结果
通过这条sql可以发现,在没建立索引的时候,执行sql需要遍历18075行数据;执行时间为:275ms
解决
在数据库表中建立索引字段:time_stamp,然后在执行sql;
EXPLAIN SELECT * FROM api_performance WHERE time_stamp='1500899762.0' ORDER BY id DESC ;
结果
通过结果可以发现这时候只需要表里7行数据就能查出我所要的值了;执行时间20ms;
总结
就是一个简单的索引,竟然让查询速度呈现指数级的增长,果然厉害,看来数据库的水还是很深的。。。
@晴天-2017-08-17 11:14:55