钱塘江上潮信来,今日方知我是我
001-MySQL的索引类型有哪些?
001-MySQL的索引类型有哪些?

001-MySQL的索引类型有哪些?

MySQL索引可以从三个维度来分类:数据结构、存储方式、索引性质。

从数据结构角度看,MySQL支持这几种索引:
1)B+树索引:最常用的,InnoDB和MylSAM默认都用它。多层平衡树结构,叶子节点用链表串起来,既能快速定位单条记录,又能高效做范围扫描。
2)哈希索引:通过哈希函数直接算出数据位置,等值查询O(1)级别,但不支持范围查询和排序。Memory 引擎默认用哈希索引,InnoDB有个自适应哈希索引会自动建,不用手动管。
3)全文索引:把文本分词后建倒排索引,类似搜索引擎的原理。适合对TEXT类型字段做关键字搜索,比如文章内容检索。
4)空间索引:基于R树实现,专门处理地理坐标这种多维数据,支持区域查询、距离计算。

从InnoDB存储方式看,分两类:
1)聚簇索引:主键索引就是聚簇索引,叶子节点直接存完整的行数据,数据按主键顺序物理存储。一张表只能有一个聚簇索引。
2)非聚簇索引:也叫二级索引,叶子节点只存索引字段值和主键值。查完二级索引还得拿着主键去聚簇索引里再查一遍,这个过程叫回表。

从索引性质看,有这几种:
1)主键索引:唯一且非空,每张表只能有一个。InnoDB里主键索引就是聚簇索引。
2)唯一索引:保证列值不重复,但允许有NULL,可以有多个NULL。
3)普通索引:没有唯一约束,纯粹为了加速查询。
4)联合索引:多列组合成一个索引,遵循最左前缀原则,列顺序很重要。
5)全文索引:文本搜索用。
6)空间索引:GIS数据用。

输入,输出,复盘,重复。

📊 本站数据

文章总数

12

本文阅读

0