【面经: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 ...

  推荐:步步深入:MySQL架构总览->查询执行流程->SQL解析顺序 - AnnsShadoW - 博客园 (cnblogs.com)icon-default.png?t=M85Bhttps://www.cnblogs.com/annsshadow/p/5037667.html

 三、索引

  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. 执行计划详细解析:
    1. id(编号):id值相同,从上往下执行,id值越大先执行。
    2. select type(查询类型):SIMPLE(简单查询)...mysql 查询优化 ~explain解读之select_type的解读 - 开心的蛋黄派 - 博客园 (cnblogs.com)icon-default.png?t=M85Bhttps://www.cnblogs.com/danhuangpai/p/8475458.html
    3. table(查询的表):查询用到的表、临时表
    4. type(索引类型):system>const>eq_ref>ref>range>index>ALL一文看懂MySQL索引type级别意思 - 简书 (jianshu.com)icon-default.png?t=M85Bhttps://www.jianshu.com/p/67d9e5ea6066
    5. possible_keys(预测使用的索引):预测使用的索引,有时候不准确
    6. key(实际使用的索引):实际使用的索引
    7. key_len(实际使用索引大小):用于查看复合索引是否全部使用
    8. ref(表之间的引用):
    9. rows(通过索引查到的数据量):
    10. Extra(额外的信息):

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值