最近在做SQL,把一些工作经验在这里简单罗列一下
一、会用到的命令:
explain
EXPLAIN ANALYZE
这来那两个具体怎么用自己查资料去
二、我遇到的常见的优化点
①没加索引
②对时间字段进行date_format格式化等运算
③更换查询主表(换数据量小的你那个主表)
④对子表等尽可能的做限制(日期、状态等,关联的数据尽可能的少、尽可能的精确)
⑤业务层多个循环嵌套 换成map实现取值,或者改成SQL中实现
三、一个奇怪的问题
遇到的一个奇怪的问题是,有一个接口很慢(大于60秒)
但是代码里面业务层没东西,直接就是调用SQL(4秒就有结果)
就被难住了,不知道哪里出问题,最后想着要不就先优化这个4秒的SQL吧,等这个SQL优化好了之后接口也不慢了,这个就很神奇
感觉要弄明白还是要研究一下MySQL或者mybatis的底层原理