mysql索引调优性能的常见手段
2023-12-28 22:00:51
前缀索引
常见的手段,当该字段的值比较长的时候,存整体的话,B+树索引的节点内存不下几个,那么每个节点包含的记录数太少,会导致树太高,索引的效果会大打折扣,而且索引还会浪费更多的空间。但这个方式也要注意,找到合适的前缀长度,使其能较好地区分数据。
恰当的使用联合索引
索引不是越多越好,在多个列上建立单独的索引可能并不会提升性能。同理建立了不恰当的联合索引也不会提升
选择合适的索引列顺序
这个通常有个经验规律:将区分度最高的列放到索引最前面。
不过注意,有些时候常见情况不能代表所有情况,会有特殊情况的存在。
聚簇索引
狭义上理解就是主键索引,不过MyISAM和innoDB的略有不同
MyISAM的数据一行一行的,然后索引的树只记录对应的行号就行了
innoDB则是数据和聚簇索引放一起了
那这么看来,自然是innoDB按照顺序插入主键的话比较好,可以避免页的分裂等问题,直接插到尾部就行。但这并不是完美的,高并发环境下会导致竞争。
索引覆盖
查询时候尽量只要必要且有用的,可以直接在二级索引叶子节点找到所需,不必回表,那省很多事情。当然现在有索引下推机制,好很多了。
用索引扫描来替代排序
索引的数据本来就有序,所以可以利用好这个,避免外部排序。多表关联时候ORDER BY的字段全部是第一张表时候才可以用索引代替排序。
删除重复或冗余索引
可能有人不理解,但是其实有时候会不经意的发生下述情况,这三个分别是主键、唯一索引、索引,相当于一个ID三个索引,这就是索引重复:
索引冗余则是有了(A, B)还要再(A)。或者创建(A, ID),ID实际上在二级索引的叶子节点,没必要了。
文章来源:https://blog.csdn.net/pige666/article/details/135240260
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!