一、索引介绍
索引:官方定义:一种帮助mysql提高查询效率的数据结构
优点:大大加快数据查询速度
缺点:1.维护索引需要耗费数据库资源
2.索引需要占磁盘空间
3.当对表的数据进行增删改查的时候,因为要维护索引,速度会受到影响
二、索引分类
1.InnoDB引擎支持的索引(前四个标红的索引为重点)
- 主键索引:设定主键后数据库会自动建立索引,InnoDB为聚簇索引;索引列的唯一且不为空null
- 单值索引(单列索引/普通索引):即一个索引中只包含单个列,一个表可以有多个单列索引
- 唯一索引:索引列的值必须唯一,但允许有空值null
- 复合索引:即一个索引包含多个列
- Full Text(全文索引):在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值;全文索引可以在CHAR、VARCHAR、TEXT类别列上创建,MYSQL只有MYISAM存储引擎支持全文搜索(Mysql5.7版本以前,只能用于MyISAM引擎)
三、索引的基本操作
1.查看某表的索引
show index from 表名;
2.删除索引
drop index 索引名 on 表名;
3.创建索引
3.1主键索引
create table t_user (id varchar(20) PRIMARY KEY,name varchar(20));
主键索引无需创建,在创建表时自动创建;
3.2单列索引(单值索引/普通索引)
- 创建表后创建索引
create index 索引名 on 表名(列名);
- 创建表时创建索引
create table t_user1 (id varchar(20) PRIMARY key, name varchar(20), key(name));
注意:随表一起创建的索引,其索引名与列名一致;无法单独指定索引名;
3.3 唯一索引
- 建表时创建
create table t_user (id varchar(20) PRIMARY key,name varchar(20),UNIQUE(name));
- 建表后创建
create unique index 索引名 on 表名(列名);
3.4复合索引
- 建表时创建
create table t_user1 (id varchar(20) PRIMARY key, name varchar(20), key(name,id));
- 建表后创建
create index 索引名 on 表名(列名1,列名2);
注意:复合索引的最左前缀原则