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)-- 组合索引
);

你可能感兴趣的:(学习笔记,mysql)