Mysql分层、存储索引、sql优化

1、常规操作命令

查看支持的引擎:show engines;   \G
查看当前使用的引擎:show variables like '%storage_engine%';

在这里插入图片描述

2、sql优化

优化原因:性能低、执行时间长、等待时间长、sql语句欠佳(连接查询)、索引失效、服务器参数设置不合理(缓冲区、线程数)等。

 1. sql: 
 2. 编写顺序:   select dinstinct...from...join..on...where...group by...having...order by...limit...
 3. 解析过程:from...on...join...where...group by...having...select dinstinct...order by ...limit...
 4. sql优化:主要是在优化索引
 5. 索引:相当于书的目录,索引是帮助mysql高效获取数据的数据结构。索引是数据结构(**B数(默认)**,Hash数)。
 6. 索引弊端:
     - 索引本身很大。
     - 索引不是所有情况都使用(数据量少、频繁更新的字段、很少使用的字段)。
     - 索引会提高查询效率,但是会降低增删改的效率。
 7. 优势:
    -提高查询效率,(降低io使用率,降低cpu使用率,B数本身就是一个排好序的结构,查询结构不再需要进行排序)
    
 8. 分类:
     - 主键索引,不能重复,id,不能为null。
     - 单值索引,单列  age 一个表可以有多个单值索引。
     - 唯一索引:不能重复,可以重复
     - 复合索引:多个列构成的索引,相当于二级目录。
    
 9. 创建索引:
     - create 索引类型    索引名   on  表(字段)
     - 单值索引:create index  age_index  on   person(age);
     - 唯一索引:create unique index name_index  on person(name);
     - 复合索引:create index  age_name_index  on person(age,name);
     - alter    table   表名    add    索引类型    索引名   (字段)
     - alter    table person   add   index     age_name_index(age,name) 
 10. 删除索引:drop index 索引名 on 表名    drop index  age_index on person;
 11. 查看索引:show index  from person;
 12. sql性能问题:
      - 分析sql执行计划(重点)。explain+sql:可以模拟sql优化器执行sql语句。
      - mysql查询优化器也许会干扰我们的优化。
      - ================explain 执行结果分析=====================
      - id:联合查询中,执行计划 id值相同,表的查询从上往下顺序执行。会因表中数据的个数不同而改变。优先查询数据量小的表。
      - 把多表连结转子查询,id值越大越优先
      - select_type:  PRIMARY:sql中包含子查询的主查询(最外层),SUBQUERY:sql中包含子查询的子查询(非最外层),SIMPLE:简单查询(不包含子查询,union),DERIVED:衍生查询(把查询结果当成表,再从这张表中查询)
      - table: 表示该查询从那张表查。

在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值