MySQL进阶02_索引概述_结构_分类_语法

2.索引(重点)

一、索引概述

索引(index)是帮助MySQL高效获取数据的数据结构(有序)

在这里插入图片描述

优缺点
优点缺点
提高数据检索的效率索引列也是占用空间的
通过索引对数据进行排序,降低数据排序的成本增删改效率低,查询效率高

二、索引结构

  • B+Tree
  • hash

MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的结构

默认就是B+Tree索引

在这里插入图片描述

支持情况

在这里插入图片描述

二叉树

在这里插入图片描述

B-Tree

在这里插入图片描述

B+Tree

在这里插入图片描述

MySQL中的B+Tree

在这里插入图片描述

Hash索引

在这里插入图片描述

Hash索引特点

只能用于对等比较(=,in) 不支持范围查询
无法利用索引完成排序操作
查询效率高,通常只要一次检索就可以了,一般高于B+Tree索引


存储引擎支持
Memory,但InnoDB中具有自适应hash功能,hash索引是存储引擎根据B+Tree索引在指定条件下自动构建的
面试题 为什么InnoDB存储索引选择B+Tree索引结构

在这里插入图片描述

三、索引分类

在这里插入图片描述

在InnoDB存储引擎中,根据索引的存储形式,可以分为以下两种

分类含义特点
聚集索引将数据存储与索引放到了一起,叶子结点保存了行数据必须有,且只有一个
二级索引将数据与索引分开存储,叶子节点保存的是对应的id主键可以存在多个

聚集索引选取股则

如果存在主键,主键就是聚集索引
如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引
如果表没有主键,或没有合适的唯一索引,则InnoDB自动生成一个rowid作为隐藏的聚集索引

在这里插入图片描述

回表查询

二级索引查完了,带着主键id查聚集索引,这个现象称为回标查询

在这里插入图片描述

思考

在这里插入图片描述

四、索引语法

-- 创建索引
--1.name字段为姓名字段,可能会重复 ,为该字段创建索引
create index idx_user_name on tb_user(name);
--2.phone手机号,非空唯一,为该字段创建个唯一索引
create unique index idx_user_phone on tb_user(phone);
--3.为profession gae status创建联合索引
create index idx_user_pro_age_sta on tb_user(profession,gae,status);
--4.为email创建一个合适的索引
create index idx_user_email on tb_user(email);
--查看索引
show index from table_name;
--删除索引
drop index 索引名称 on table_name;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值