程序员小天地

聚簇索引和二级索引

2022-01-29  本文已影响0人  小草莓子桑

前段时间处理了一个mysql优化问题,涉及到聚簇索引和二级索引,今天来简单说下,因为我们的mysql用的是innodb索引,所以本文中都是以innodb索引为基础

先背书

聚簇索引

二级索引

直接上栗子

CREATE TABLE `t_user_cate` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `user_id` bigint(20) NOT NULL COMMENT '用户ID',
  `cate_id` varchar(20) NOT NULL COMMENT '用户类别ID',
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据插入/更新时间(会自动更新,不需要刻意程序更新)',
  PRIMARY KEY (`id`),
  KEY `idx_user_cate_id` (`user_id`,`cate_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='写文章使用,用户类别表'

t_user_cate表的聚簇索引展示

t_user_cate表的二级索引展示

二级索引

回表查询

SELECT
  *
FROM
  t_user_cate
where
  user_id = 1123
回表查询

回表的两种情况

SELECT
  user_id,
  cate_id
FROM
  t_user_cate
where
  userid = 1123
SELECT
  user_id,
  cate_id,
  update_time 
FROM
  t_user_cate
where
  userid = 1123
需要回表查询的执行计划

聚簇索引优缺点总结

优点

缺点

聚簇索引和二级索引说到这里,欢迎大家来交流,指出文中一些说错的地方,让我加深认识,愿大家没有bug,谢谢!

上一篇下一篇

猜你喜欢

热点阅读