mysql高级

在这里插入图片描述
MyIsam和InnoDB的区别,MyIsam不支持主外键,事务,直接锁表,只缓存索引,不缓存真实数据,表空间小
InnoDB 支持主外键,事务,行锁,,缓存索引外还缓存,真实数据
表空间大,所以 MyIsam关注性能,适合读,InnoDB关注事务

SQL执行顺序
from on where groupby having select distinct orderby
扰动函数,哈希算法时候尽量分散
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
B+树存储,,添加一个索引的时候,添加的索引的叶子节点放的不是数据而是主键或者唯一键或者6K的看不见的row_id,,然后再回表一次,去查,innodb’为聚簇索引,索引和数据再一起。
SQL优化
通过show profile 看各个步骤耗费的时间
回表:如上查询2棵B+树,(如用辅助索引)
索引覆盖:查找第一个B+树的时候,叶子节点的ID就是要查询的值
索引下推:where name =? and age=?,引擎拉取数据得时候根据name,age(之前是根据name再mysqlserver层通过age赛选(IO量大))
最左匹配:再组合索引(name,age)的时候,
where name =? and age=? where name =?
where age=? where age=? and name =?

124会使用索引,最左匹配原则,先匹配name,再匹配age
MRR,mult range read 在内存根据ID排序,便于区域查找

FIC fast index create 删除表中数据的时候,会创建一个临时表,删除原表,临时表改名,FIC给表添加一个share锁,不创建临时表,还是在原表中,读没问题
例如组合索引(name,age,pos)key_len
name(24) age(11) pos(8) (24+8) * 3 + 2
select * from table where name like “J%”
select * from table where name like “%J%” 索引失效
select * from table where name = “haha” and age > 20 and pos= “dada”
出现了age > 20 范围查找,,后面的pos索引失效
查询有普通列存在时候,又or不走索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值