Mysql 优化专题

innoDb引擎不支持hash索引  memory引擎支持hash索引

b+索引树 

每个结点的存放的是他子节点中最小值的一棵树,每个结点可以存放多个字段,又可以分为聚簇索引和非聚簇索引

聚簇索引主键索引树,叶子结点存的是数据
非聚簇索引叶子结点存的是主键的值,要进行回表才能找到对应的数据

如果id是主键索引树, 则叶子结点的data区域存放的该行的数据. 如果是其他字段做的非主键索引树 则 叶子结点的data区域存放的是id的值 没有存整行的数据, 则会进行回表再做一次查询 性能略差.  

如果没有做索引树,则会整一个没有重复的作为索引树,可能会把string作为索引树 这样会导致性能极大降低 ,如果都重复了则再会新生成一个, 所以我们最好指定一个 不重复的作为主键.

覆盖索引查询  只差做索引树的字段 和id 因为叶子结点存了id 不会回表

 

2.索引什么时候会失效

2.1 独立的列, 索引不能是表达式的一部分

每次都会对id进行累加, 会造成全表扫描 使用concat拼接 也会造成该效果

2.2 like 不能以%开头 会失效

可以使用es的模糊查询 或者mogodb的方法

2.3 要查询的数据左边是字符串右边= 是数字需要类型转换

2.4 最左匹配原则 🚩

添加的索引是有顺序的,在添加索引字段是按照什么顺序,查询就要按照什么顺序,但是底层有执行优化器会根据索引顺序进进行调整

但是 如果有三个索引的话 查询时 第一个索引不存在 则会导致统一匹配索引失效  ,添加组合索引时,应该按照区分度有高到底来添加索引

explain 查看语句的执行效率

通过explain的type字段 可以查看索引是否命中, 以此来评估性能标准,一般使用的为ref(非唯一性索引扫描)之上

possible_keys可用的索引   key为使用的索引  使用force index(索引名) 指定索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值