-
Notifications
You must be signed in to change notification settings - Fork 3.7k
mysql index 理解 By backtrack
小傅哥 edited this page Apr 17, 2020
·
2 revisions
mysql 官方手册
1. 聚簇索引 (ClusteredIndex)
2. 普通索引 (SecondIndex)
3. 回表查询
4. 索引覆盖
5. 分页查询
create table user(
id int(10) auto_increment,
name varchar(30),
age tinyint(4),
primary key (id),
index idx_age (age)
)engine=innodb charset=utf8mb4;
insert into user(name,age) values('张三',30);
insert into user(name,age) values('李四',20);
insert into user(name,age) values('王五',40);
insert into user(name,age) values('刘八',10);
聚簇索引 -> 主键 (id)
普通索引 -> 字段 (age)
# not use index -> all
select * from user;
explain select * from user;
# use index -> idx_age
select id from user;
explain select id from user;
# use index index -> idx_age
select id,age from user;
explain select id,age from user;
# not use index -> second index => index => name
select id,age,name from user;
explain select id,age,name from user;
# page query -> not use index => Using filesort
select id,age,name from user order by age limit 100,2
删除索引 -> drop index idx_age on user;
创建索引 -> create index idx_age_name on user(`age`,`name`);
再次验证
# use index index -> idx_age_name
select id,age,name from user;
explain select id,age,name from user;
index idx_age_name
还原
删除索引 -> drop index idx_age_name on user;
创建索引 -> create index idx_age on user(`age`);
验证
# not use index -> second index => index => name
select id,age,name from user;
explain select id,age,name from user;
explain 返回结果含义
https://dev.mysql.com/doc/refman/5.7/en/explain-output.html
msyql 数据库 表物理存储信息
-
查看存储路径
show global variables like "%datadir%"; -> /usr/local/mysql/data - ib_logfile0 - ib_logfile1 -> databaseName - db.opt - user.frm - user.ibd - ibdata1
db.opt -> default-character-set=utf8 default-collation=utf8_general_ci
- mysql 物理存储文件的格式信息
- B+ 树实现原理 (https://zhuanlan.zhihu.com/p/27700617)
- explain sql 语句后 key_len 值的计算原理 ->已解决 (https://www.cnblogs.com/xuanzhi201111/p/4554769.html)
小傅哥(微信:fustack),公众号:bugstack虫洞栈
| bugstack.cn - 沉淀、分享、成长,让自己和他人都能有所收获!
🌏 知识星球:码农会锁
实战项目:「DDD+RPC分布式抽奖系统
」、专属小册、问题解答、简历指导、架构图稿、视频课程
🐲 头条
-
💥
🎁 Lottery 抽奖系统
- 基于领域驱动设计的四层架构的互联网分布式开发实践 -
小傅哥的《重学 Java 设计模式》
- 全书彩印、重绘类图、添加内容 -
⭐小傅哥的《Java 面经手册》
- 全书5章29节,417页11.5万字,完稿&发版 -
小傅哥的《手撸 Spring》
- 通过带着读者手写简化版 Spring 框架,了解 Spring 核心原理 -
🌈小傅哥的《SpringBoot 中间件设计和开发》
- 小册16个中间件开发30个代码库
⛳ 目录
💋 精选
🐾 友链
建立本开源项目的初衷是基于个人学习与工作中对 Java 相关技术栈的总结记录,在这里也希望能帮助一些在学习 Java 过程中遇到问题的小伙伴,如果您需要转载本仓库的一些文章到自己的博客,请按照以下格式注明出处,谢谢合作。
作者:小傅哥
链接:https://bugstack.cn
来源:bugstack虫洞栈
2021年10月24日,小傅哥
的文章全部开源到代码库 CodeGuide
中,与同好同行,一起进步,共同维护。
这里我提供 3 种方式:
-
提出
Issue
:在 Issue 中指出你觉得需要改进/完善的地方(能够独立解决的话,可以在提出 Issue 后再提交PR
)。 -
处理
Issue
: 帮忙处理一些待处理的Issue
。 -
提交
PR
: 对于错别字/笔误这类问题可以直接提交PR
,无需提交Issue
确认。
详细参考:CodeGuide 贡献指南 - 非常感谢你的支持,这里会留下你的足迹
- 加群交流 本群的宗旨是给大家提供一个良好的技术学习交流平台,所以杜绝一切广告!由于微信群人满 100 之后无法加入,请扫描下方二维码先添加作者 “小傅哥” 微信(fustack),备注:加群。
微信:fustack
- 公众号(bugstack虫洞栈) - 沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获。
公众号:bugstack虫洞栈
感谢以下人员对本仓库做出的贡献或者对小傅哥的赞赏,当然不仅仅只有这些贡献者,这里就不一一列举了。如果你希望被添加到这个名单中,并且提交过 Issue 或者 PR,请与我联系。