MySQL基础知识3-索引

索引语法

//创建索引
CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name ( index_col_name,... );

//查看索引
SHOW INDEX FROM table_name;

//删除索引
DROP INDEX index_name ON table_name;

示例

// 查看索引
show index from tb_user;

// 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、age、status 创建联合索引
create index idx_user_pro_age_sta on tb_user(profession,age,status);

// 4. 删除 name 索引
drop index idx_user_name on tb_user;

步骤1~2 创建普通索引和唯一索引:
在这里插入图片描述
步骤3 创建联合索引:
在这里插入图片描述
步骤4 删除索引:
在这里插入图片描述

索引性能分析

EXPLAIN 或者 DESC命令获取 MySQL 如何执行 SELECT 语句的信息,包括在 SELECT 语句执行过程中表如何连接和连接的顺序。

语法:

-- 直接在select语句之前加上关键字 explain / desc
EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件 ;

示例:
在这里插入图片描述
参数说明:
在这里插入图片描述
在这里插入图片描述

索引失效

  1. 违反最左前缀法则
  2. 范围查询右边的列,不能使用索引
  3. 不要在索引列上进行运算操作, 索引将失效
  4. 字符串不加单引号,造成索引失效。(类型转换)
  5. 以%开头的Like模糊查询,索引失效

示例-违反最左前缀法则

创建联合索引,字段顺序:name, status, address

在这里插入图片描述

如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列。匹配最左前缀法则,走索引:

在这里插入图片描述

违反最左前法则,索引失效,key为NULL说明未命中索引:

在这里插入图片描述

如果符合最左法则,但是出现跳跃某一列,只有最左列索引生效,key_len的值和只判断name时相同:

在这里插入图片描述

相关链接:
MySQL索引背后的数据结构及算法原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值