本博客是用来记录自己学习的过程
MySQL的索引类型
FULLTEXT 全文索引 MyISAM存储引擎支持全文索引(InnoDB在 MySQL 5.6.4 版本中也开始支持全文索引),用于查找文本的关键词,而不是直接比较是否相等。
查找条件使用MATCH AAINST,而不是普通的where。 全文索引的格式:MATCH(colunName) AGAINST('String') eg: select * from A where MATCH('name') AGAINST('long');
全文索引使用倒排索引实现,它记录着关键词到其所在文档的映射
2.Hash 哈希
哈希索引能以O(1)时间进行查找,但是没有了有序性:
无法用于排序与分组 只支持精确查找,
无法用于部分查找和范围查找 InnoDB储存引擎有一个特殊的功能叫"自适应哈希索引",当某个索引值被使用的非常频繁时,会在B+ Tree索引之上在创建一个哈希索引,这个就让B+Tree索引具有哈希索引的一些优点,例如快速的哈希查找。
3.B Tree
B+Tree MYSQL 默认的索引类型 是大多数MySQL储存引擎的默认索引类型。
因为不再需要进行全表扫描,只需要对树进行搜索即可,所以查找速度快很多。
除了用于查找,还可以用于排序和分组 可以指定多个列作为索引列,多个索引列共同组成键 使用于全键值,键值范围和键前缀查找。其中键前缀查找只适用于左前缀查找。
如果不是按照索引列的顺序查找,则无法使用索引 InnoDB的B+ Tree索引分为主索引和辅助索引,主索引的叶子节点 的数据域记录着完整的数据记录。这种索引被称为聚集索引。因为无法把数据行存放在两个不同的地方。所以一个表只能有一个。
辅助索引的叶子节点数据域记录着主键值,当使用辅助索引查找时,先查找主键值再进入主索引进行查找
4.R-Tree 空间数据索引
MyISAM储存引擎支持空间数据索引(R-Tree),可以用于地理数据存储,空间数据索引会从所有维度来索引数据,可以有效地使用任意维度来进行组合查询。必须使用GIS相关函数来维护数据
InnoDB和MyISAM b+tree索引区别
1.MyISAM b+tree 子节点使用的是存储对象的地址(非聚集索引),InnoDB子节点储存的是数据