5. 索引

索引的作用?
索引用于快速查找具有特定列值的行。如果没有索引,MySQL必须从第一行开始,然后读取整个表以查找相关行。表越大,成本越高。如果表中有相关​​列的索引,MySQL可以快速确定要在数据文件中间寻找的位置,而无需查看所有数据。这比按顺序读取每一行要快得多。
类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可。

普通索引

创建普通索引

create index 索引名 on 表名(列名);

删除普通索引

drop index 索引名 on 表名;

查看索引

show index from 表名称;

建表同时创建普通索引

create table t1(
    id int not null auto_increment primary key,
    name varchar(32),
    email varchar(64),
    extra text,
    index ix_name(name)
    /*添加索引到列名 name, 索引名为 ix_name*/
)

唯一索引
某一列属性值唯一时可创建唯一索引,查找更加快速。

/*创建表和唯一索引*/
create table t2(
    id int not null auto_increment primary key,
    name varchar(32),
    email varchar(64),
    unique index ix_name (name)
);

/*创建唯一索引*/
create unique index 索引名 on 表名(列名);

/*删除唯一索引*/
ALTER TABLE 表名 DROP INDEX 索引名;

主键索引
主键有两个功能:加速查询 和 唯一约束(不可含null)

当一个列被创建为主键时,它就会被赋予主机索引的属性。

联合索引

联合索引是将n个列联合成一个索引
其应用场景为:频繁的同时使用 n 个列来进行查询,如:where name = 'shark' and age = 18。

MySQL [teacher]> create index _name_email_email on t10(id,name,email);

5. 索引_第1张图片

drop 删除一个联合索引的时候,索引记录里面三个都删除掉了

SQl 执行计划
并不是真的执行,只是分析SQL语句.....

explain select name from t1 where   name='shark'\G
5. 索引_第2张图片

你可能感兴趣的:(5. 索引)