MySQL 集群索引

MySQL 集群索引

索引是一个独立的数据结构,允许我们在现有表中添加索引。它能够加快对数据库表记录的检索速度。它为每个索引列的值创建一个条目。

聚集索引实际上是一个存储行数据的表。它根据键值定义表数据的顺序,只能按一种方式排序。在数据库中,每个表只能有一个聚集索引。在关系型数据库中,如果表列包含主键或唯一键,MySQL允许你基于该特定列创建一个聚集索引,命名为PRIMARY。

特点

聚集索引的主要特点如下:

  • 它帮助我们同时存储数据和索引。
  • 它根据键值只存储数据一种方式。
  • 键值查找。
  • 它们是扫描和索引搜索。
  • 聚集索引始终使用一个或多个列来创建索引。

优点

聚集索引的主要优点如下:

  • 它帮助我们最大化缓存命中率,最小化页面传输。
  • 它是范围或组合的理想选择,适合max、min和count查询。
  • 它在范围的起始位置使用一个位置机制来查找索引条目。

缺点

聚集索引的主要缺点如下:

  • 它包含很多非顺序插入的记录。
  • 它会创建许多常量页面分裂,如数据页或索引页。
  • 更新记录总是需要很长时间。
  • 它对SQL查询需要额外的工作,例如插入、更新和删除。

InnoDB表上的聚集索引

MySQL InnoDB表必须有一个聚集索引。InnoDB表使用聚集索引来优化最常见的查找和DML(数据操纵语言)操作,如INSERT、UPDATE和DELETE命令。

当主键在InnoDB表中定义时,MySQL始终将其作为名为PRIMARY的聚集索引使用。如果表中不包含主键列,MySQL会搜索唯一键。在唯一键中,所有列都是NOT NULL,并将其作为聚集索引使用。有时,表既没有主键又没有唯一键,那么MySQL会在内部创建一个隐藏的聚集索引GEN_CLUST_INDEX,该索引包含行ID的值。因此,InnoDB表中只有一个聚集索引。

除主索引(聚集索引)之外的索引称为次要索引或非聚集索引。在MySQL InnoDB表中,非聚集索引的每个记录都具有行和列的主键列。MySQL使用这个主键值在聚集索引或次要索引中搜索行。

示例

在下面的语句中,主键是一个聚集索引。

CREATE TABLE `student_info` (
  `studentid` int NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `age` varchar(3) DEFAULT NULL,
  `mobile` varchar(20) DEFAULT NULL,
  `email` varchar(25) DEFAULT NULL,
  PRIMARY KEY (`studentid`), //clustered index
  UNIQUE KEY `email_UNIQUE` (`email`)
)

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程