page contents

MySQL中的索引有哪些分类?

轩辕小不懂 发布于 2022-03-19 13:48
阅读 482
收藏 0
分类:数据库
3337
Nen
Nen
- 程序员

MySQL的所有列类型都可以被索引。MyISASM和InnoDB类型的表默认创建的都是BTREE索引;MEMORY类型的表默认使用HASH索引,但是也支持BTREE索引;空间列类型的索引使用RTREE(空间索引)。MySQL中的索引是在存储引擎层中实现的,而不是在服务器层实现的。所以每种存储引擎的索引都不一定完全相同,也不是所有的存储引擎都支持所有的索引类型。MySQL目前提供了以下几种索引。

1)BTREE索引:最常见的索引类型,大部分引擎都支持BTREE索引,例如MyISASM、InnoDB、MEMORY等。

2)HASH索引:只有MEMORY和NDB引擎支持,适用于简单场景。

3)RTREE索引(空间索引):空间索引是MylSAM的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少。

4)FULLTEXT(全文索引):全文索引也是MylSAM的一个特殊索引类型,主要用于全文索引,InnoDB从MySQL 5.6版本开始提供对全文索引的支持。

MySQL目前还不支持函数索引,但是支持前缀索引,即对索引字段的前N个字符创建索引,这个特性可以大大缩小索引文件的大小,从而提高性能。但是,前缀索引在排序ORDER BY和分组GROUP BY操作的时候无法使用,也无法使用前缀索引做覆盖扫描。用户在设计表结构的时候也可以对文本列根据此特性进行灵活设计。

请先 登录 后评论