建立数据库索引是提升运行效率的重要手段,使用索引能大大提升MySQL的检索速度。创建索引时,首先确保该索引是应用SQL查询语句的条件。(一般为where子句的条件)

索引有单列索引和组合索引两种。单列索引也就是一个索引只包含一个列,一个数据表可以包含多个单列索引,但是这个不是组合索引哦!!!!!!

组合索引是一个索引包含了多个列。

索引也是一张表,包含了主键和索引字段,并指向实体表的记录。

前面说了索引的好处,可以加快检索速度,但是,它也有缺点。过多的使用索引会降低更新表的速度,比如,在对表进行insert、update和delete时,速度会降低。因为MySQL不仅需要保存数据,还要更新索引文件。并且,建立索引要占用一定的磁盘空间。

唯一索引

唯一索引与前面提到的索引类似,区别在于,索引列的值必须唯一,但是允许有空值。如果是组合索引,则列值的组合必须唯一。

唯一索引有下列几种创建方式

直接创建索引

create unique index indexname on mytable(username(length))

通过修改表的结构增加索引

 alter table column_charset add unique index_name (c2(length));

创建表时直接指定

create table mytable(
    -> ID INT NOT NULL,
    -> username varchar(16) not null,
    -> unique indexname (id)
    -> );

普通索引

普通索引是最基本的索引,他没有任何限制。有下面三种方式,创建的时候和上面的唯一索引类似,只是少了unique标识符

直接创建索引

create unique index indexname on mytable(username(length))

如果是char和varchar类型,length字段可以小于字符实际长度;如果是blob和text类型,则必须指定length。

修改表结构来添加索引

alter table column_charset add index_name (c2(length));

创建表时直接指定

create table mytable2(
    -> ID int not null,
    -> username varchar(16) not null,
    -> index index_xxxx (username(16))
    -> );

删除索引

drop index index_xxxx on mytable2;

查看一张表的所有索引

show index from mytable;

你也可能喜欢

发表评论