5.|5. 索引

索引的作用?
索引用于快速查找具有特定列值的行。如果没有索引,MySQL必须从第一行开始,然后读取整个表以查找相关行。表越大,成本越高。如果表中有相关??列的索引,MySQL可以快速确定要在数据文件中间寻找的位置,而无需查看所有数据。这比按顺序读取每一行要快得多。
类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可。
【5.|5. 索引】普通索引
创建普通索引
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.|5. 索引
文章图片
drop 删除一个联合索引的时候,索引记录里面三个都删除掉了
SQl 执行计划
并不是真的执行,只是分析SQL语句.....
explain select name from t1 wherename='shark'\G

5.|5. 索引
文章图片

    推荐阅读