一、常用存储引擎
二、sql语句解析过程
- 编写过程:
? ? ? ? select distinct ... from ... join ... on ... where ... group by ... having ... order by ... limit ... - 解析过程:
? ? ? ? from ... on ... join ...?where ... group by ... having ...?select distinct ... order by ... limit ...
? 推荐:步步深入:MySQL架构总览->查询执行流程->SQL解析顺序 - AnnsShadoW - 博客园 (cnblogs.com)https://www.cnblogs.com/annsshadow/p/5037667.html
?三、索引
-
本质:索引是一种数据结构(MySql默认为BTree、HashTree) -
优点:增加查询效率(降低io使用率);降低cpu使用率(避免排序); -
弊端:索引本身占用存储空间,降低增删改效率 -
不适用:少量数据;频繁更新的字段(更新表的同时还需要更新对应索引产生额外开销);很少使用的列; -
分类:primary key主键索引、index单值索引(普通索引)、unique index唯一索引、复合索引 -
创建索引:create 索引类型 索引名 on 表名(字段...)或者alter table 表名 索引类型 索引名(字段...) -
删除索引:drop index 索引名 on 表名 -
查看索引:show index from 表名
?四、sql优化
- 查询执行计划:explain + 查询语句
- 执行计划详细解析:
- id(编号):id值相同,从上往下执行,id值越大先执行。
- select type(查询类型):SIMPLE(简单查询)...mysql 查询优化 ~explain解读之select_type的解读 - 开心的蛋黄派 - 博客园 (cnblogs.com)https://www.cnblogs.com/danhuangpai/p/8475458.html
- table(查询的表):查询用到的表、临时表
- type(索引类型):system>const>eq_ref>ref>range>index>ALL一文看懂MySQL索引type级别意思 - 简书 (jianshu.com)https://www.jianshu.com/p/67d9e5ea6066
- possible_keys(预测使用的索引):预测使用的索引,有时候不准确
- key(实际使用的索引):实际使用的索引
- key_len(实际使用索引大小):用于查看复合索引是否全部使用
- ref(表之间的引用):
- rows(通过索引查到的数据量):
- Extra(额外的信息):
?
|