📅  最后修改于: 2020-11-17 03:34:25             🧑  作者: Mango
索引是一个单独的数据结构,它使我们可以在现有表中添加索引。它使您能够改进更快地检索数据库表上的记录。它为索引列的每个值创建一个条目。
聚簇索引实际上是存储行数据的表。它基于只能以一种方式排序的键值定义表数据的顺序。在数据库中,每个表只能有一个聚集索引。在关系数据库中,如果表列包含主键或唯一键,则MySQL允许您基于该特定列创建名为PRIMARY的聚集索引。
聚集索引的基本特征如下:
聚集索引的主要优点如下:
聚集索引的主要缺点如下:
MySQL InnoDB表必须具有聚集索引。 InnoDB表使用聚簇索引来优化大多数常用查找和DML(数据操作语言)操作(如INSERT,UPDATE和DELETE命令)的速度。
当在InnoDB表中定义了主键时,MySQL总是将其用作名为PRIMARY的聚集索引。如果该表不包含主键列,则MySQL搜索唯一键。在唯一键中,所有列都不为空,并将其用作聚集索引。有时,表既没有主键又没有唯一键,则MySQL在内部创建隐藏的聚集索引GEN_CLUST_INDEX,该索引包含行ID的值。因此,InnoDB表中只有一个聚集索引。
除PRIMARY索引(聚集索引)以外的索引被称为二级索引或非聚集索引。在MySQL InnoDB表中,非聚集索引的每个记录都有行和列的主键列。 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`)
)