MySQL---有关MySQL索引及InnoDB和MyISAM的索引区别

本博客是用来记录本身学习的过程函数

  • MySQL的索引类型
  1. FULLTEXT 全文索引 MyISAM存储引擎支持全文索引(InnoDB在 MySQL 5.6.4 版本中也开始支持全文索引),用于查找文本的关键词,而不是直接比较是否相等。
  2. 查找条件使用MATCH AAINST,而不是普通的where。 全文索引的格式:MATCH(colunName) AGAINST('String') eg: select * from A where MATCH('name') AGAINST('long');
  3. 全文索引使用倒排索引实现,它记录着关键词到其所在文档的映射

2.Hash 哈希学习

哈希索引能以O(1)时间进行查找,可是没有了有序性:对象

没法用于排序与分组 只支持精确查找,blog

没法用于部分查找和范围查找 InnoDB储存引擎有一个特殊的功能叫"自适应哈希索引",当某个索引值被使用的很是频繁时,会在B+ Tree索引之上在建立一个哈希索引,这个就让B+Tree索引具备哈希索引的一些优势,例如快速的哈希查找。排序

3.B Tree索引

B+Tree MYSQL 默认的索引类型 是大多数MySQL储存引擎的默认索引类型。文档

由于再也不须要进行全表扫描,只须要对树进行搜索便可,因此查找速度快不少。博客

除了用于查找,还能够用于排序和分组 能够指定多个列做为索引列,多个索引列共同组成键 使用于全键值,键值范围和键前缀查找。其中键前缀查找只适用于左前缀查找。select

若是不是按照索引列的顺序查找,则没法使用索引 InnoDB的B+ Tree索引分为主索引和辅助索引,主索引的叶子节点 的数据域记录着完整的数据记录。这种索引被称为汇集索引。由于没法把数据行存放在两个不一样的地方。因此一个表只能有一个。搜索

辅助索引的叶子节点数据域记录着主键值,当使用辅助索引查找时,先查找主键值再进入主索引进行查找

4.R-Tree 空间数据索引

MyISAM储存引擎支持空间数据索引(R-Tree),能够用于地理数据存储,空间数据索引会从全部维度来索引数据,能够有效地使用任意维度来进行组合查询。必须使用GIS相关函数来维护数据

InnoDB和MyISAM b+tree索引区别

1.MyISAM b+tree 子节点使用的是存储对象的地址(非汇集索引),InnoDB子节点储存的是数据

相关文章
相关标签/搜索