B-Tree 索引
当人们谈及索引而没有说明其类型的时候,多半是指 B-Tree 索引,它通常使用 B-Tree 数据结构来保存数据。B-Tree 索引的每一个叶子节点都包含了指向下一个节点的联接,以实现快速的范围遍历。
哈希索引
哈希索引(Hash Index)建立在哈希表的基础上,它只对使用了索引中的每一列的精确查找有用。对于每一行,存储引擎计算出了被索引列的哈希码(Hash Code),它是一个较小的值,并且有可能和其他行的哈希码不同。它把哈希码保存在索引中,并且保存了一个指向哈希表中每一行的指针。
空间(R-Tree)索引
MyISAM 支持空间索引,它可以使用诸如 GEOMETRY 这样的地理空间数据类型。和 B-Tree 索引不同,空间索引不会要求 WHERE 子句使用索引的最左前缀。它同时全方位地索引了数据。这样做可以高效地使用任何数据组合进行查找。然而,必须使用 MySQL GIS 函数,例如 MBRCONTAINS(),才能得到这个好处。
全文索引
FULLTEXT 是 MyISAM 表的一种特殊索引。它从文本中找到关键字,而不是直接和索引中的值进行比较。全文搜索和其他匹配类型完全不同。它有很多微妙的地方,比如停用词、词干和复数、布尔搜索。它包含的工作远不止存储引擎进行简单的 WHERE 参数匹配。
在某列上有全文索引不能磨灭在同一列上有 B-Tree 索引的价值。全文索引用于 MATCH AGAINST 操作,而不是普通的 WHERE 子句操作。