【面经:sql优化(MySql版)】

一、常用存储引擎

    InnoDB(mysql默认):事务优先,适合高并发操作(行锁) MyISAM:性能优先(表锁 )

二、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 ...

推荐:

三、索引

  1. 本质:索引是一种数据结构(MySql默认为BTree、HashTree)
  2. 优点:增加查询效率(降低io使用率);降低cpu使用率(避免排序);
  3. 弊端:索引本身占用存储空间,降低增删改效率
  4. 不适用:少量数据;频繁更新的字段(更新表的同时还需要更新对应索引产生额外开销);很少使用的列;
  5. 分类:primary key主键索引、index单值索引(普通索引)、unique index唯一索引、复合索引
  6. 创建索引:create 索引类型 索引名 on 表名(字段...)或者alter table 表名 索引类型 索引名(字段...)
  7. 删除索引:drop index 索引名 on 表名
  8. 查看索引:show index from 表名

四、sql优化

  1. 查询执行计划:explain + 查询语句
  2. 执行计划详细解析: id(编号):id值相同,从上往下执行,id值越大先执行。 select type(查询类型):SIMPLE(简单查询)... table(查询的表):查询用到的表、临时表 type(索引类型):system>const>eq_ref>ref>range>index>ALL possible_keys(预测使用的索引):预测使用的索引,有时候不准确 key(实际使用的索引):实际使用的索引 key_len(实际使用索引大小):用于查看复合索引是否全部使用 ref(表之间的引用): rows(通过索引查到的数据量): Extra(额外的信息):
经验分享 程序员 微信小程序 职场和发展