MySQL InnoDB 索引_MySQL
程序员文章站
2022-04-06 10:58:22
...
bitsCN.com
B+树索引
B+树索引在DB中有一个特点就是高扇出性,一般在DB中B+树的高度在2-3层左右,也就意味着只需要2-3次的IO操作即可。而现在的磁盘每秒差不多在100次IO左右,2-3次意味着查询时间只需0.02-0.03秒。
聚集索引
InnoDB存储引擎表是索引组织表,即表中数据安装主键顺序存放。而聚集索引就是按照每张表的主键构造一颗B+,并且叶节点存放着整张表的行记录数据,因此也让聚集索引也是索引的一部分。
实际的数据页只能按照一颗B+树进行排序,因此每张表只能拥有一个聚集索引。在很多情况下,查询优化器非常倾向于采用聚集索引,因为聚集索引能够让我们在索引的叶节点上直接找到数据。
辅助索引
对于辅助索引(也称非聚集索引),叶节点不包含行的全部数据。叶节点除了包含键值以外,每个叶节点中的索引行中还包含了一个书签,该书签用来告诉InnoDB存储引擎,哪里可以找到与索引相对应的行数据。因为InnoDB存储引擎是索引组织表,因此InnoDB存储引擎的辅助索引的书签就是相应行数据的聚集索引键。
什么时候使用B+树索引
一般的经验是对于访问表中很少一部分行时,使用B+树索引才有意义。而对于像性别,地区,类型等字段,它们可取值的范围很小(低选择性),一般不推荐使用B+树索引;反之,如果某个字段的取值范围很广,几乎没有重复(高选择性),则此时使用B+树索引是最合适的,例如email字段,在一些应用中通常都不允许重复出现。
因此,当访问高选择性字段并从表中取出很少一部分行时,对这个字段添加B+树索引是非常有必要的。但是如果出现了访问字段是高选择性,但是取出的行数据占表中大部分的数据时,这时MySQL数据库就不会使用B+树索引了。
文章参考:
bitsCN.com
推荐阅读
-
Mysql主从复制原理及搭建
-
Python将txt文件输入到MySQL数据库中
-
centos7.2.1511安装jdk1.8.0_151及mysql5.6.38的方法
-
linux中mysql备份shell脚本代码
-
mysql 开发基础系列17 存储过程和函数(上)
-
mysql 的一些事
-
Linux登录MySQL时出现 Can't connect to local MySQL server through socket '/tmp/mysql.sock'解决方法
-
CentOS随笔 - 4.CentOS7安装MySql 5.5.60(下载 tar 方式安装)
-
高性能MySQL--innodb中事务的隔离级别与锁的关系
-
MYSQL基础语法的使用