详细介绍:索引index
一、索引是什么?
索引是一种帮助MySQL提高查询效率的数据结构。
索引优点:
提高数据查询速度。
索引缺点:
维护索引需要耗费数据库资源;索引需要占用磁盘空间;当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响。
二、索引分类(面试必问)
InnoDB所支持的索引:
(1)主键索引
设定为主键后数据库会自动建立索引,innodb为聚簇索引。
建表时自动创建
索引列值不能为空null。
(2)单值索引(单列索引;普通索引)
除主键之外,为表中的某个字段(一个)单独创建的索引。
一个索引只包含单个列,一个表可以有多个单列索引。
(3)唯一索引
索引列的值必须唯一,但允许有空值。
索引列值可以存在null,但是只能存在一个null。
(4)复合索引(组合索引)
一个索引包含多个列
MyISAM所支持的索引:
Full Text 全文索引(MySQL5.7版本之前,只能用于MyISAM引擎)
全文索引类型为Full Text,在定义索引的列上支持值的全文查找,允许在这些索引列中插入重复值和空值。全文索引可以在char/varchar/text类型列上创建。MySQL只有MyISAM存储引擎支持全文索引(使用场景不多)。
三、索引的基本操作
(1)查看索引
show index from 表名;
(2)普通索引创建两种方式
①建表时创建
create table t_user(id varchar(20) primary key,name varchar(20),key(name));
“随表一起建立的索引,索引名和列名一致”
②建表后创建
create index name_index on t_user(name);
(3)删除索引
drop index 索引名 on 表名
(4)唯一索引创建的两种方式
①建表时创建(“随表一起建立的索引,索引名和列名一致”)
create table t_user(id varchar(20) primary key,name varchar(20),unique(name));
②建表后创建
create unique index nameindex on t_user(name);
(5)复合索引创建的两种方式
①建表时创建
create table t_user(id varchar(20) primary key,name varchar(20),age int, key(name,age));
②建表后创建
create index nameageindex on t_user(name,age);

浙公网安备 33010602011771号