MySQL 聚集索引

索引是一种单独的数据结构,允许我们在现有表中添加索引。它使您能够更快地检索数据库表上的记录。它为索引列的每个值创建一个条目。

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

一、MySQL 聚集索引 特征

聚集索引的基本特征如下:

  • 它帮助我们同时存储数据和索引。
  • 它基于键值仅以一种方式存储数据。
  • 键查找。
  • 它们是扫描和索引查找。
  • 聚集索引总是使用一列或多列来创建索引。

二、MySQL 聚集索引 好处

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

  • 它帮助我们最大化缓存命中并最小化页面传输。
  • 它是具有最大、最小和计数查询的范围或组的理想选择。
  • 在范围的开始,它使用定位机制来查找索引条目。

三、MySQL 聚集索引 缺点

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

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

四、InnoDB 表上的聚集索引

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

在 InnoDB 表中定义主键时,MySQL 总是将其用作名为 PRIMARY 的聚集索引。如果表不包含主键列,MySQL 将搜索唯一键。在唯一键中,所有列都不是NULL并将其用作聚集索引。有时,表没有主键也没有唯一键,然后 MySQL 在内部创建包含行 id 值的隐藏聚集索引GEN_CLUST_INDEX 。因此,InnoDB 表中只有一个聚集索引。

PRIMARY 索引(聚集索引)以外的索引称为二级索引或非聚集索引。在 MySQL InnoDB 表中,非聚集索引的每条记录都有行和列的主键列。MySQL 使用此主键值在聚集索引或二级索引中搜索行。

五、MySQL 聚集索引 示例

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

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`)  
)  

 

热门文章

优秀文章