Mysql高级知识

一、存储引擎

Mysql存储引擎,常见的有InnoDB和MyISAM,查看存储引擎的sql语句:

show engines;

查看当前使用的存储引擎的sql语句:

show variables like '%storage_engine%';

InnoDB和MyISAM之间的区别:主外键(MyISAM不支持)、事务(MyISAM不支持)、行表锁(MyISAM支持表锁,InnoDB支持行锁)、缓存(MyISAM只缓存索引不缓存数据,InnoDB不仅缓存索引也缓存数据)、数据文件(MyISAM存储为.frm文件描述表结构,.MYI文件存放索引,.MYD文件存放数据。InnoDB存储为.frm文件描述表结构,.ibd文件存放索引和数据)。

二、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优化

1、 性能下降的表现

执行时间长,等待时间长。

2、性能下降的原因

(1)查询语句写得不好,使用各种连接和子查询导致索引没用上或者没有创建索引。
(2)建立的索引失效,真正执行时没有用到索引。
(3)服务器调优及个人配置参数导致。

四、 索引

1、索引的基础知识

索引就是一种排好序的数据结构,能帮助MySQL高效地去获取数据。
优势:降低读取成本。
劣势:需要使用空间去存储,降低了增删改的速度。
创建索引的sql语句:

create index 索引名 on(索引字段,索引字段);

查看索引的sql语句:

show index from  表名;

删除索引的sql语句:

drop index 索引名 on 表名;

2、索引失效

(1)使用函数导致索引失效。
(2)使用范围条件查询,在它右边的会失效。
(3)使用like’%条件’,会失效。
(4)使用!=会失效。
(5)使用or会失效。
(6)使用is not null会失效。
使用覆盖索引可以解决上面这些索引失效问题,覆盖索引(查询的字段和建立索引的字段刚好吻合)。

五、 EXPLAIN

(1)id:执行顺序,先大后小,相同从上往下。
(2)select_type:查询的类型。
(3)table:使用的表。
(4)partitions:分区。
(5)type:表扫描的方式,例如ALL(全表扫描)。
(6)possilble_key:可能使用到的索引。
(7)key:实际使用到的索引。
(8)key_len: 索引长度,根据它大小可以判断使用了组合索引中的几个。
(9)ref:索引值的情况。
(10)rows:优化的行数。
(11)filtered:满足行数的百分比,越大越好。
(12)Extra:产生的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kill D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值