wordpress站点目录,软件开发用什么笔记本,wordpress 媒体库分享,谢岗做网站MySQL的聚簇索引和非聚簇索引
聚簇索引
聚簇索引是一种索引结构#xff0c;它与数据行存储在一起#xff0c;即索引的叶子节点就是数据行本身。在MySQL中#xff0c;主键索引就是一种典型的聚簇索引。
涉及情况
当查询需要按照主键或唯一索引进行精确查找时#xff0c;…MySQL的聚簇索引和非聚簇索引
聚簇索引
聚簇索引是一种索引结构它与数据行存储在一起即索引的叶子节点就是数据行本身。在MySQL中主键索引就是一种典型的聚簇索引。
涉及情况
当查询需要按照主键或唯一索引进行精确查找时会涉及到聚簇索引。
数据结构
聚簇索引的数据结构是B树它的叶子节点存储了完整的数据行。
速度
由于数据行和索引在一起所以在使用聚簇索引进行查询时速度比非聚簇索引更快。
非聚簇索引
非聚簇索引是一种索引结构它的叶子节点存储的是指向数据行的指针而不是数据行本身。在MySQL中普通索引就是一种非聚簇索引。
涉及情况
当查询需要按照非主键或非唯一索引进行查找时会涉及到非聚簇索引。
数据结构
非聚簇索引的数据结构同样是B树但它的叶子节点存储的是指向数据行的指针。
速度
由于非聚簇索引的叶子节点存储的是指针而不是完整的数据行所以在使用非聚簇索引进行查询时速度相对较慢。
对比
聚簇索引的叶子节点存储完整的数据行速度更快适合于按主键或唯一索引进行精确查找的情况不需要回表。非聚簇索引的叶子节点存储的是指向数据行的指针速度相对较慢适合于按非主键或非唯一索引进行查找的情况,需要回表。
例子
假设有一个名为students的学生表包含以下字段
id (主键)nameagegenderclass_id (班级ID)
CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age INT,gender VARCHAR(10),class_id INT,INDEX idx_name (name),INDEX idx_class_id (class_id)
);在这个例子中id字段是主键因此它将会作为聚簇索引。同时我们创建了两个非聚簇索引分别是按照name和class_id字段创建的索引。当进行按照name或class_id进行查询时将会涉及到非聚簇索引的使用。