MySQL 的索引有哪些

索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现。

  • B+Tree 索引

    • 是大多数 MySQL 存储引擎的默认索引类型。

  • 哈希索引

    • 哈希索引能以 O(1) 时间进行查找,但是失去了有序性;

    • InnoDB 存储引擎有一个特殊的功能叫“自适应哈希索引”,当某个索引值被使用的非常频繁时,会在 B+Tree 索引之上再创建一个哈希索引,这样就让 B+Tree 索引具有哈希索引的一些优点,比如快速的哈希查找。

  • 全文索引

    • MyISAM 存储引擎支持全文索引,用于查找文本中的关键词,而不是直接比较是否相等。查找条件使用 MATCH AGAINST,而不是普通的 WHERE。

    • 全文索引一般使用倒排索引实现,它记录着关键词到其所在文档的映射。

    • InnoDB 存储引擎在 MySQL 5.6.4 版本中也开始支持全文索引。

  • 空间数据索引

    • MyISAM 存储引擎支持空间数据索引(R-Tree),可以用于地理数据存储。空间数据索引会从所有维度来索引数据,可以有效地使用任意维度来进行组合查询。

最后更新于