网站建设绩效考核,微网站怎么开通,建设局副局长,自己做导航网站1、什么是聚簇索引和非聚簇索引#xff1f;
聚簇索引#xff0c;通常也叫聚集索引。
非聚簇索引#xff0c;指的是二级索引。
下面看一下它们的含义#xff1a;
1.1、聚集索引选取规则
如果存在主键#xff0c;主键索引就是聚集索引。如果不存在主键#xff0c;将使…1、什么是聚簇索引和非聚簇索引
聚簇索引通常也叫聚集索引。
非聚簇索引指的是二级索引。
下面看一下它们的含义
1.1、聚集索引选取规则
如果存在主键主键索引就是聚集索引。如果不存在主键将使用第一个唯一索引作为聚集索引。如果没有主键或唯一索引则InnoDB会自动生成一个rowid作为隐藏的聚集索引。
说到聚集索引就不得不提到“回表查询”了。
2、什么是回表查询
通过二级索引找到对应的主键值到聚集索引中查找整行数据这个过程就是回表。
示例有user表如下
CREATE TABLE user (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 技术主键,name varchar(100) DEFAULT NULL COMMENT 姓名,age int(11) DEFAULT NULL COMMENT 年龄,PRIMARY KEY (id),KEY idx_1 (name) USING BTREE
) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT用户表; 这里id作为主键也就是聚集索引。name字段为普通索引就是二级索引。
1假如此时有sql1select * from user where id1;
那么id作为聚集索引数据存储与索引放到了一块索引结构的叶子节点保存了行数据直接就可以得到整行数据【id1,name小明age18】 2假如又有sql2select * from user where name小明;
那么此时就需要“回表查询”了。回表过程如下
①因为建了“name”这个二级索引“select *”需要查整行数据
②先用“小明”去二级索引中找到“小明”的id1
③再用“1”去找聚集索引最终拿到整行数据。