记一次线上性能优化
今天在查看接口的时候发现有两个接口长期霸占最耗时接口排行榜,所以找了个空闲定位了一下问题。从原来的500ms左右提到4ms左右,特此小小记录一下。
定位过程
-
通过程序监控工具,我们发现有一个slow sql,单表查询。
select pk from tb1 where c1 = 'some key' and ... other condition
在sql书写上的确没有优化空间了。
-
EXPLAIN
上面sql发现:通过上图发现是type为ALL全表扫描,单表比较庞大,所以扫表必然慢。
解决
-
字段
c1
是一个基本不会重复的字段,所以在这个上面加上了索引就可以了。加过索引之后的执行计划:上图可以发现,ref变成了const。
结束语
写建表sql的时候要根据自己的业务量和业务场景创建合适的索引