国内网站建设费用联盟,个人做网站如何赚钱吗,广州顶正餐饮培训学校,数码网站建设维护什么是覆盖索引#xff1f;
覆盖索引#xff1a;查询时使用了索引#xff0c;且需要返回的列#xff0c;在改索引中已经全部能找到。
示例#xff1a;有user表如下#xff1a;
CREATE TABLE user (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 技术主键,name varch…什么是覆盖索引
覆盖索引查询时使用了索引且需要返回的列在改索引中已经全部能找到。
示例有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用户表; sql1select * from user where id1; -- 覆盖索引
sql2select id,name from user where name小明; -- 覆盖索引
sql3select id,name,age from user where name小明; -- 非覆盖索引需要回表查询 小结覆盖索引是指查询使用了索引返回的列必须在索引中能全部找到
使用id查询直接走聚集索引查询一次索引扫描直接返回数据性能高
如果返回的列中没有创建索引就可能会触发回表查询所以尽量避免使用select*