概念:
帮助mysql进行高效查询的一种数据结构(有序)。
在数据之外,数据库系统还维护着满足特定查找算法的数据结构(索引),
这些数据结构以**某种方式(具体不清楚)**引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

ps:种类和类型的意思并不一样,种类是物质物品分类~是品类划分。类型则是物品物质的形制划分~是具象化了。
种类:
普通索引:仅加速查询
唯一索引:加速查询+列值唯一(可以有null)
主键索引:加速查询+列值唯一(不可以有null)+表中只有一个
组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并。
全文索引:对文本的内容进行分词,进行搜索。

类型:
索引分单列索引和组合索引。
**单列索引:**即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。
**组合索引:**即一个索引包含多个列
**Btree索引(b树索引):**最常见的索引类型,Btree索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),每次查询都是从数的入口root开始,一次遍历node,获取leaf。这是mysql里默认和最常用的索引类型。
Rtree(空间索引):
Rtree在mysql很少使用,仅支持geometry数据类型,支持该类型的存储引擎只有myisam、dbd、innodb、ndb、archive几种。
相对于btree,rtree的优势在于范围查找。

**Hash索引(唯一索引):**由于HASH的唯一(几乎100%的唯一)及类似键值对的形式,很适合作为索引。HASH索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。但是,这种高效是有条件的,即只有在“=”和“in”条件下高效,对于范围查询、排序即组合索引仍然效率不高。

**全文索引(FullText):**目前只有MyISAM引擎支持。其可以在Create table,Alter Table,Create Index使用,不过目前只有char,varchar,text类型的列上可以创建索引。
全文索引并不是和MyIsam一起诞生的,它的出现是为了解决Where name like %word% 这类针对文本的模糊查询效率低的问题。
Mysql的主要索引:
Mysql目前主要有以下几种索引:BTree、Hash、FullText、Rtree

哪里有误差请在评论列表中指点一下,万分感谢