Mysql之索引

在这里插入图片描述

快速入门(机制相关的)

当一个表有很多数据的时候
用索引优化查询的速度就非常的关键了、
我创建一个emp表
有8百万条数据
在这里插入图片描述
可以看到查询一个指定数据要用到4.5s的时间
效率非常低

通过
CREATE INDEX 索引名 ON(列名)
这样通过对应列查询会快一点
不过创建索引会占一点内存

在这里插入图片描述
查询时间变成0.003s
在这里插入图片描述

细节

在这里插入图片描述

注意的是我们只能通过我们创建索引的列来查找WHERE
才能加快效率
你在empno上建索引
你用ename查询,享受不到索引带来的快速(除非在ename也建索引)

索引机制

在这里插入图片描述
在这里插入图片描述
正常查找就是一个个对比,而且就算你对比第一个就对上了,也不能停
因为不知道后面有没有对应的
而我们建立索引
大概就是通过我们指定的列
建立二叉树(红黑树)
能够大幅度提高查找效率(具体的话可以看一下相关文章)

而且如果我们
删除,修改,增加数据的话
对应的二叉树也会发生改变,从而降低操作的速度
但是我们还是要用索引-因为SELECT操作用的很多很多
比增删改用的多的多的多

索引类型

在这里插入图片描述

就是primary key
和unique约束的本身就已经创建了索引(用本列查找快)
如果想在普通列创建索引,就自己创建,称为普通索引
不同于前两种,这种索引可以有重复数据,下面细嗦	

操作(指令)

在这里插入图片描述在这里插入图片描述

CREATE TABLE t25(
	id INT,
	`name` VARCHAR(32));
# 查询表是否有索引
SHOW INDEXES FROM t25
-- 添加索引
-- 添加唯一索引(会把对应列变为UNIQUE)创建表没有定义时可以用
CREATE UNIQUE INDEX id_index ON t25 (id)
-- 添加普通索引 方式1
CREATE INDEX id_index ON t25(id)
-- 方式2
ALTER TABLE t25 ADD INDEX id_index(id)-- 和上面对应
-- 某列不会重复选唯一索引,会重复就普通索引

-- 添加主键索引(如果刚开始没有定义的话)
CREATE TABLE t26(
	id INT,
	`name` VARCHAR(32));
ALTER TABLE t26 ADD PRIMARY KEY(id)-- 添加主键索引(也是定义主键)

SHOW INDEX FROM t26
-- 删除索引
DROP INDEX id_index ON t25 # 前面是索引名称,后面是表名
-- 删除主键索引
ALTER TABLE t26 DROP PRIMARY KEY# 因为只有一个主键没有索引名
-- 修改索引,先删除在添加新索引

-- 查询索引
-- 方式1:
SHOW INDEX FROM t25
-- 方式2:
SHOW INDEXES FROM t25
-- 方式3:
SHOW KEYS FROM t25
-- 方式4
DESC t25 # 这个看表的结构也可以

索引适用性(一些规则)

在这里插入图片描述
1.不说
2.比如说sex不是‘男’就是‘女’
3.比如说登陆次数,你一直修改,前面也说索引会降低修改效率,所以不推荐
4.你建索引不就是为了WHERE查找快,你不用你建什么

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小袁拒绝摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值