mysql索引有哪几种

发布时间: 2023-11-21 10:26 阅读: 文章来源:1MUMB26PS

1.应用功能上分主键索引

一张表只能有一个主键索引,不允许重复、不允许为 NULL。

唯一索引

数据列不允许重复,允许为 NULL 值,一张表可有多个唯一索引,索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

普通索引/二级索引

一张表可以创建多个普通索引,一个普通索引可以包含多个字段,允许数据重复,允许NULL值插入。

联合索引

一个组合索引包含两个或两个以上的列。查询的时候遵循 mysql 组合索引的 “最左前缀”原则,即使用where时条件要按照建立索引的时候字段的排列方式放置索引才会生效。

全文索引

它查找的是文本中的关键词,主要用于全文检索。

全文索引的限制:

全文索引只能用于InnoDB或MyISAM表,并且只能为char、VARCHAR或TEXT列创建。

MySQL提供了一个内置的全文ngram解析器,支持中文,日文和韩文(CJK),以及一个可安装的MeCab日文全文解析器插件。 “ngram全文解析器”和“MeCab全文解析器插件”。

FULLTEXT索引定义可以在创建表时在CREATE TABLE语句中给出,也可以稍后使用ALTER TABLE或CREATE index添加。

对于大型数据集,将数据加载到一个没有FULLTEXT索引的表中,然后在此之后创建索引,比将数据加载到一个已有FULLTEXT索引的表中要快得多。

分区表不支持全文搜索。

2.从数据结构上区分聚簇索引

将数据存储与索引放到了一块,找到索引也就找到了数据。使用聚簇索引可以减少回表。

聚簇索引对于主键的排序查找和范围查找速度非常快。

InnoDB 的聚簇索引:InnoDB 对主键建立聚簇索引。

如果你不指定主键,InnoDB 会用一个具有唯一且非空值的索引来代替。

如果不存在这样的索引,InnoDB 会定义一个隐藏的主键,然后对其建立聚簇索引。

由于聚簇索引是将数据跟索引结构放到一块,因此一个表仅有一个聚簇索引。

非聚簇索引

只要不是聚簇索引的 都可以称之为非聚簇索引。将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行。

•••展开全文