Explain详解
id:数值越大越先执行,数值相同的从上往下执行,id为null最后执行
select type:表示对应的行是简单还是复杂查询,simple简单查询不包含子查询和union;primary:复杂查询中最外层的select;subquery:包含在select中的子查询(不在from子句中);derived:包含在from子句中的子查询。MySQL会将结果存放在一个临时表中,也称为派生表。;union:在union关键字随后的selelct。具体详见下方链接:https://www.cnblogs.com/xiaoqiang-code/p/11404149.html
https://www.cnblogs.com/wangzun/p/7118646.html 索引基础概念
https://www.cnblogs.com/liehen2046/p/11052666.html 索引失效场景
https://blog.csdn.net/xiaoxiao48/article/details/105408602/ 索引失效场景
https://blog.csdn.net/wwww6662003/article/details/25828455 in的优化
https://www.cnblogs.com/xiaoqiang-code/p/11404149.html explain详解 重要
性能优化:
1、索引方面:
覆盖索引:就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。
根据最多检索条件放在比较靠前。
Froce Index 强制索引
增加联合索引
2、数据结构:List转HashMap 大数据量判断是否contains的时候,list转Map一个是O(n)一个是O(1)
3、改变业务实现逻辑,从最开始的数据一致性完全处理,到分离处理,对主业务表处理,对具体的标注信息夜间定时处理。避免性能紧张。
4、distinct替代为索引的 group by
5、分库分表:mycat、shardingjdbc
数据库锁超时问题:
原因:操作太多太复杂,解决方法:只操作必要操作,不必要的开定时任务解决,避免锁超时可以减小操作数量。比如一条条