数据库性能调优-03|MySQL调优之索引:索引的失效与优化

三、MySQL调优之索引:索引的失效与优化

一.MySQL 索引存储结构

索引是优化数据库查询最重要的方式之一,它是在 MySQL 的存储引擎层中实现的,所以每一种存储引擎对应的索引不一定相同。

索引类型MyISAM引擎InnoDB引擎Memory引擎
B+Tree索引yesyesyes
HASH索引nonoyes
R-Tree索引yesnono
Full-Text索引yesnono

B+Tree 索引和 Hash 索引是我们比较常用的两个索引数据存储结构,B+Tree 索引是通过 B+ 树实现的,是有序排列存储,所以在排序和范围查找方面都比较有优势。

Hash 索引相对简单些,只有 Memory 存储引擎支持 Hash 索引。Hash 索引适合 key-value 键值对查询,无论表数据多大,查询数据的复杂度都是 O(1),且直接通过 Hash 索引查询的性能比其它索引都要优越。

在创建表时,无论使用 InnoDB 还是 MyISAM 存储引擎,默认都会创建一个主键索引,而创建的主键索引默认使用的是 B+Tree 索引。不过虽然这两个存储引擎都支持 B+Tree 索引,但它们在具体的数据存储结构方面却有所不同。

二.索引调优方法

1、覆盖索引优化查询

2、自增字段作主键优化查询

在使用 InnoDB 存储引擎时,如果没有特别的业务需求,建议使用自增字段作为主键。

3、前(后)缀索引优化

索引的本质就是使用空间换时间,对于数据库来讲,表中数据所占用的空间很小,索引占用的空间很大,可以使用前缀索引或者后缀索引去减小索引的大小。
不过,前(后)缀索引是有一定的局限性的,例如 order by 就无法使用前缀索引,无法把前(后)缀索引用作覆盖索引。

4、防止索引失效(仅讨论innodb)

不同的索引引擎使用的是不同的索引数据结构
数据库索引失效的可能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值