MySQL索引

一、索引介绍

索引:官方定义:一种帮助mysql提高查询效率的数据结构

优点:大大加快数据查询速度

缺点:1.维护索引需要耗费数据库资源

2.索引需要占磁盘空间

        3.当对表的数据进行增删改查的时候,因为要维护索引,速度会受到影响

二、索引分类

1.InnoDB引擎支持的索引(前四个标红的索引为重点)

  1. 主键索引:设定主键后数据库会自动建立索引,InnoDB为聚簇索引;索引列的唯一且不为空null
  2. 单值索引(单列索引/普通索引):即一个索引中只包含单个列,一个表可以有多个单列索引
  3. 唯一索引索引列的值必须唯一,但允许有空值null
  4. 复合索引:即一个索引包含多个列
  5. 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);

注意:复合索引的最左前缀原则 

四、索引的底层原理

你可能感兴趣的:(MySQL,mysql,数据库,database)