1、何为索引?
索引是一种特殊的数据库结构(B+树),由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。
2、为什么使用索引?
在MySQL中,通常有以下两种方式访问数据库表的行数据
1、顺序访问
顺序访问是在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据
2、索引访问
索引访问是通过遍历索引来直接访问表中记录行的方式,索引存储了指定列数据值的指针,根据指定的排序顺序对这些指针排序(B+树)
3、索引的优缺点
优点
1、通过创建唯一索引可以保证数据库表中每一行数据的唯一性
2、可以给所有的MySQL列类型设置索引
3、可以大大的加快查询速度
4、在实现数据的参考完整性方面可以加速表与表之间的连接
5、在使用分组和排序的子句进行数据查询时也可以显著减少查询中分组和排序的时间
缺点
1、创建和维护索引要耗费时间,并且随着数据量的增加所消耗的时间也会增加
2、索引需要占磁盘的空间除了数据表占空间外,每一个索引还要占一定的物理空间,如果有大量的索引,索引文件可能比数据文件更快的达到最大文件尺寸
3、当对表中的数据进行增加、删除和修改的时候,索引也要动态维护,这样就降低了数据的维护速度。
4、创建索引
1、创建普通索引
-- 方式一 create index 索引名 on 表名 (列名); -- eg:create index index_name on student (name); -- 方式二: alter table 表名 add index 索引名 (列名); -- eg:create table studeng add index index_name (name); -- 方式一与方式二实现效果一样
2、创建唯一索引
create unique index 索引名 on 表名(列名); --eg:create unique index unique_name on student (name); alter table 表名 add unique 索引名(列名); --eg:alter table student add unique unique_name(name);
3、创建主键索引
alter table 表名 add primary key (列名); --eg:create table student add primary key (id);
4、创建组合/多列索引
alter table 表名 add index 索引名(列名1,列名2,...); --eg:alter table student add index index_sum(age,name);
5、查看索引
show index from 表名; --eg:show index from student;
6、删除索引
drop index 索引名 on 表名; --eg:drop index index_name on student;