mysql索引调优性能的常见手段

前缀索引

常见的手段,当该字段的值比较长的时候,存整体的话,B+树索引的节点内存不下几个,那么每个节点包含的记录数太少,会导致树太高,索引的效果会大打折扣,而且索引还会浪费更多的空间。但这个方式也要注意,找到合适的前缀长度,使其能较好地区分数据。
在这里插入图片描述在这里插入图片描述

恰当的使用联合索引

索引不是越多越好,在多个列上建立单独的索引可能并不会提升性能。同理建立了不恰当的联合索引也不会提升

选择合适的索引列顺序

这个通常有个经验规律:将区分度最高的列放到索引最前面。
不过注意,有些时候常见情况不能代表所有情况,会有特殊情况的存在。

聚簇索引

狭义上理解就是主键索引,不过MyISAM和innoDB的略有不同
MyISAM的数据一行一行的,然后索引的树只记录对应的行号就行了
在这里插入图片描述
在这里插入图片描述
innoDB则是数据和聚簇索引放一起了
在这里插入图片描述在这里插入图片描述
那这么看来,自然是innoDB按照顺序插入主键的话比较好,可以避免页的分裂等问题,直接插到尾部就行。但这并不是完美的,高并发环境下会导致竞争。

索引覆盖

查询时候尽量只要必要且有用的,可以直接在二级索引叶子节点找到所需,不必回表,那省很多事情。当然现在有索引下推机制,好很多了。

用索引扫描来替代排序

索引的数据本来就有序,所以可以利用好这个,避免外部排序。多表关联时候ORDER BY的字段全部是第一张表时候才可以用索引代替排序。

删除重复或冗余索引

可能有人不理解,但是其实有时候会不经意的发生下述情况,这三个分别是主键、唯一索引、索引,相当于一个ID三个索引,这就是索引重复:在这里插入图片描述
索引冗余则是有了(A, B)还要再(A)。或者创建(A, ID),ID实际上在二级索引的叶子节点,没必要了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值