所在的位置: mysql >> mysql发展 >> MySQL有哪些索引

MySQL有哪些索引

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

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

唯一索引

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

普通索引/二级索引

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

联合索引

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

全文索引

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

全文索引的限制:

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

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

FULLTEXT索引定义可以在创建表时在CREATETABLE语句中给出,也可以稍后使用ALTERTABLE或CREATEindex添加。

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

分区表不支持全文搜索。

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

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

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

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

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

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

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

非聚簇索引

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




转载请注明:http://www.aierlanlan.com/tzrz/7225.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了