mysql解析过程
from...json...on....where....group by.....having.....select....ordere by
详细解析过程请参考:sql解析顺序
sql优化
sql优化主要是在优化索引,索引是帮助Mysql高效获取数据的数据结构。Mysql默认使用的是B树。
如下图,当一该表的age字段加了索引后,mysql会将该列的数据用B树的形式排列,所以当执行查询语句时,直接根据B树去查询,明显次数会比普通查询使用的少。
- 索引的弊端:
- 索引本身就是数据,所以需要占用存储空间
- 索引不是所有情况下都使用,如:
a.数据量少
b.频繁更新的字段,每次更改都会使B树重新排序。
c.很少使用的字段
3.索引会降低增删改的效率
- 索引的优势:
- 提高查询效率(降低IO使用率)
- 降低CPU使用率
- 索引分类:
- 主键索引:不能重复,不能为null,如id
- 单值索引:单列,一个表可以多个单值索引。
- 唯一索引:和主键索引一样不能重复,但是可以为null
- 符合索引:多个列构成(相当于二级目录,先找第一个列,如果找到多条数据再找第二个列)
- 创建索引:
语法:create 索引类型 索引名 on 表(字段)
#单值:
方式一:create index dept_index on tb(dept);
方式二:alter tb add index dept_index(dept);
#唯一索引:
方式一:create unique index name_index on tb(name);
方式二:alter tb add unique index name_index(name);
#复合索引
方式一:create index dept_name_index on tb(dept,name);
方式二:alter tb add index dept_name_index(dept,name);
如果一个字段是primary key,该字段默认是主键索引
- 删除索引:
drop index 索引名 on 表名;
- 查询索引:
show index from 表名;