关系型数据库MySQL(二)_索引

时间:2021-08-21 19:43:46

优点

大大加快数据的查询速度

创建唯一性索引,保证数据库表中每一行数据的唯一性

在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

缺点

索引需要占物理空间

当对表中的数据进行增删改的时候,索引也要进行修改,降低了数据的维护速度

使用原则

并不是索引越多越好,而是需要自己合理的使用

经常更新的表要避免有过多的索引,而经常查询的字段应该创建索引

数据量小的表最好不要使用索引(因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果)

在相同值多的列上不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。相反的,在一个字段上不同值较多可以建立索引。数据之间越不相同,索引速度越快。

索引的类型

普通索引, 唯一索引, 主键索引, 组合索引,全文索引

普通索引

最基本的索引,没有任何限制

直接创建索引:create index index_name on table_name(column_name);

修改表结构的方式创建:alter table table_name add index index_name(column_name);

创建表时指定索引:create table table_name(...,...,index index_name(column_name));

唯一索引

索引列中的值必须是唯一的,允许有空值

直接创建索引:create unique index index_name on table_name(column_name);

修改表结构的方式创建:alter table table_name add unique index index_name(column_name);

创建表时指定索引:create table table_name(...,...,unique index index_name(column_name));

主键索引

是唯一索引的特定类型,不允许有空值;对于主键,关系数据库会自动对其创建主键索引。使用主键索引的效率是最高的,因为主键会保证绝对唯一

创建方式:与创建表时添加主键的方式相同

组合索引

在多个字段上创建的索引

alter table table_name add index index_name(column1,column2,column3);

全文索引

主要用来查找文本中的关键字,而不是直接与索引中的值相比较,它更像是一个搜索引擎

直接创建索引:create fulltext index index_content on table_name(content);

修改表结构的方式创建:alter table table_name add fulltext index index_name(content);

创建表时指定索引:create table table_name(...,...,fulltext index index_name(content));

修改索引名称

alter index old_index_name rename to new_index_name;

删除索引

drop index index_name on product;