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

发布时间:2023年12月27日

前缀索引

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

恰当的使用联合索引

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

选择合适的索引列顺序

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

聚簇索引

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

索引覆盖

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

用索引扫描来替代排序

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

删除重复或冗余索引

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

文章来源:https://blog.csdn.net/pige666/article/details/135240260
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。