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`)
)
热门文章
优秀文章