上一份工作由于部门架构问题,没有人能搭建、维护、优化数据库,但由于数据量过大又有着这样的需求,最后只能由我硬着头皮上,今天就记一下之前做的一些关于优化的工作。基础的表结构设计、常用字段索引添加、水平垂直拆表就不说了,主要是想记一下自己关于查询语句的优化。
explain的语法很简单,后面直接跟想要做的查询语句,就会对其查询的方式进行解析,一共会输出10个字段:
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
- d为查询的系列号
- select_type即为select的类型,包括如下几种情况
- simple:简单select,无union或者子查询
- primary:最外面的select
- union:union中第二个或者更后面的select语句
- dependentunion union:UNION的第二个或后面的select语句,取决于外面的查询
- Union result: Union的结果
- Subquery:子查询的第一个select
- dependent subquery:子查询中的第一个select,取决于外部的查询
- derived:导出表的select(from子句的子查询)
- table:显示数据是哪个表的
- type:最重要的一个维度,表示了连接使用了那种类别,有无使用索引