MySQL索引模块

本文档题目来自MySQL纯手写面试笔记解析,2020锤爆35K月薪,你值得拥有
闲谈:百度找的总结而已;过段时间再看一下高性能MySQL吧。本来看了整理了一些。觉得很繁琐,然后直接百度找答案了,不过吧想弄懂为什么还是得看官方资料。

什么是索引?
索引分别有哪些优点和缺点?
为什么 MySQL 官方建议使用自增主键作为表的主键?
自增主键有哪些优缺点?
索引有几种类型?分别如何创建?
主键索引和唯一索引区别?
在 InnDB 中主键索引为什么比普通索引的查询性能高?
什么叫回表查询?
如何查询一张表的所有索引?
MySQL 最多可以创建多少个索引列?
如何让 like %abc 走索引查询?

什么是索引?
  1. MySQL中的一种获取数据的数据结构。(快速查找排好序的一种数据结构)
索引分别有哪些优点和缺点?
  1. 创建唯一性索引,可以保证数据库表中每一行数据的唯一性(优点)
  2. 加快数据的检索速度
  3. 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义
  4. 在使用分组和排序子句进行数据检索时减少时间。
  5. 创建索引维护索引需要耗费时间,这种时间会随着数据量的增加而增加(缺点)
  6. 索引需要占物理空间。
  7. 表中数据频繁修改时,索引也要动态维护。
为什么 MySQL 官方建议使用自增主键作为表的主键?
  1. 自增主键可以避免页分裂
  2. mysql(innoDB引擎)底层数据结构是B+树,一个表有多少索引就会有多少个B+树,mysql中的数据都是按顺序保存在B+树上的(索引本身是有序的,将随机I/O变成有序I/O)
  3. mysql底层又是数据页为单位来存储数据(一个数据页默认16K)。
  4. 自增主键直接把页装写满,再添加数据,直接去申请一个新的数据页即可。
  5. 非自增主键(保证索引有序性),每次插入都需要放到合适的位置,造成数据会调整到其他数据页上,造成页分裂。
自增主键有哪些优缺点?
  1. 自动增长,顺序存放,检索有利。(优点)
  2. 数字型,占用空间小,易排序。
  3. 手动插入id时麻烦(缺点)
索引有几种类型?分别如何创建?主键索引和唯一索引区别
索引(逻辑分类索引)解释创建方式
主键索引(只能有一个)不为空,不重复alter table tb add primary key add("id")
唯一索引(可多个索引)不重复,可空,只能包含一列alter table tb add unique("username")
普通索引(可多个)重复,可空alter table tb add index_name("username")
全文索引搜索关键词更高效alter table tb fulltext(”username“)
索引(物理分类索引)解释优势
聚集索引 (一个)一般是表中的主键索引,if(主键),else if(第一个唯一索引),else(innoDB引擎为每行数据内置的6字节row-id精确查找、范围查找有比较好的性能(相对于普通索引和全表扫描)
非聚集索引(可以多个)该索引中的索引逻辑顺序与磁盘上的物理存储顺序不同(非主键的那一列)
在 InnDB 中主键索引为什么比普通索引的查询性能高?

原因
为什么这段还是得在高性能MySQL中找答案,之后做好笔记。。

什么叫回表查询?

先通过普通索引的值定位聚簇索引值,再通过聚簇索引的值定位行记录数据,需要扫描两次索引B+树,它的性能较扫一遍索引树更低。
详细解答

如何查询一张表的所有索引?

mysql> show keys from table_name;

MySQL 最多可以创建多少个索引列?
  • mysql中提到,一个表最多16个索引,最大索引长度256字节.
如何让 like %abc 走索引查询?

下次来下次解答。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值