MySQL学习笔记(十)-MySQL索引

MySQL学习笔记-MySQL索引

作者:就叫易易好了
日期:2020/12/08

什么是索引?

索引(index)是帮助MySQL高效获取数据的数据结构,可以得到索引的本质。

好处:提高查询效率

索引需要维护,维护索引需要耗费时间,所以索引并不是越多越好。

假如,如果我们需要查找‘mysql’,首先要定位到m字母,然后再找到剩下的sql。

可以理解为排好序的快速查找数据结构

索引的优势:

  • 类似大学图书馆建书的索引提高数据检索的效率,降低数据库的IO成本
  • 通过索引列对数据进行排序,降低排序成本,降低CPU的消耗。

索引的劣势:

  • 索引虽然大大提高了查询速度,同时却会降低更新表的速度,比如对表格进行INSERT,UPDATE或者DELETE,因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件每次更新添加的索引列的字段。

索引分类:

  • 单值索引:一个索引只包含单个列,一个表可以有多个单列索引
  • 唯一索引:索引列的值必须唯一,但允许有空值。
  • 复合索引:一个索引包含了多个列

当在表中创建了primary key约束或unique约束时,MySQL会自动地创建一个唯一索引。

基本语法:

创建:

1、CEATE INDEX 索引名 ON 表名
2、ALTER 表名 ADD INDEX(索引名) ON ……

删除:

DROP INDEX(索引名) ON 表名

查看:

SHOW INDEX FROM 表名

案例:

创建一个普通索引:

CREATE table BOOKS
(
bkID int not null,
bkName varchar(30),
bkAuthor varchar(30),
bkPrice decimal(3,1),
bkYear year not null,
index(bkYear)   -- 在bkYear上创建一个普通索引
);

查看索引:

show index from BOOKS;

通过以下语句可以查看建表时的命令:

show create table BOOKS;

创建一个唯一索引:

DROP table if exists BOOKS;
CREATE table BOOKS
(
bkID int not null,
bkName varchar(30),
bkAuthor varchar(30),
bkPrice decimal(3,1),
bkYear year not null,
unique index(bkYear)   -- 在bkYear上创建一个唯一索引
);

创建一个复合索引:

DROP table if exists BOOKS;
CREATE table BOOKS
(
bkID int not null,
bkName varchar(30),
bkAuthor varchar(30),
bkPrice decimal(3,1),
bkYear year not null,
index compositeIndex(bkID,bkName,bkAuthor)-- 组合索引
);
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值