索引的特点
优点
·大大加快数据的查询速度
·使用分组和排序进行数据查询时,可以显著减少查询时分组和排序的时间
·创建唯一索引,能够保证数据库表中每一行数据的唯一性
·在实现数据的参考完整性方面,可以加速表和表之间的连接
缺点
·创建索引和维护索引需要消耗时间,并且随着数据量的增加,时间也会增加
·索引需要占据磁盘空间
·对数据表中的数据进行增加,修改,删除时,索引也要动态的维护,降低了维护的速度
索引创建原则
·更新频繁的列不应设置索引
·数据量小的表不要使用索引
·重复数据多的字段不应设为索引
·首先应该考虑对where 和 order by涉及的列上建立索引
索引的查看
查看数据库所有索引
select * from mysql.`innodb_index_stats` a where a.database_name` =’数据库名’;
查看表中所有索引
select * from mysql.`innodb_index_stats` a where a.database_name` =’数据库名’ and a.table_name like ‘%表名%’;
查看表中所有索引
Show index from 表名;
单列索引
普通索引
MySQL中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点
1.创建表时直接创建
create table student(
eid int primary key,
ename varchar(20)
index index_name(eid)
);
2.直接创建
create index index_ename on student(ename);
3.通过修改表结构的形式添加索引
alter table student add index index_eid(eid);
唯一索引(unique)
唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一
1.创建表时直接创建
create table student(
eid int primary key,
ename varchar(20)
unique index_name(eid)
);
2.直接创建
create unique index_ename on student(ename);
3.通过修改表结构的形式添加索引
alter table student add unique index_eid(eid);
主键索引
每张表一般都会有自己的主键,当我们在创建表时,MySQL会自动在主键列上建立一个索引这就是主键索引。主键是具有唯一性并且不允许为NULL,所以他是一种特殊的唯一索引
组合索引
是在按一定顺序的多个字段上创建的索引
create unique index index_name eid on student(ename,eid);
其中unique可替换
全文索引
--1.创建表时直接创建
create table t(
id int primary key auto increment;
fulltext(id)
);
--2.直接创建
create fulltext index index_id on t(id);
--3.通过修改表结构的形式添加索引
alter table t add fulltext index_id(id);