在MySQL中,索引由数据表中一列或多列组合而成,建立索引的目的是为了优化数据库的查询速度。其中,用户建立的索引指向数据库中具体数据所在位置。当用户经过索引查询数据库中的数据时,不须要遍历全部数据库中的全部数据。这样,大幅度提升了查询效率。数据库
1.索引是一种将数据库中单列或者多列的值进行排序的结构。应用索引,能够大幅度提升查询的速度。
2.用户经过索引查询数据,不但能够提升查询速度,也能够下降服务器的负载。
3.应用MySQL数据库时,并不是用户在查询数据的时候,总须要应用索引来优化查询。
4.总体来讲,索引能够提升查询的速度,可是会影响用户操做数据库的插入操做。服务器
MySQL的索引包括普通索引、惟一性索引、全文索引、单列索引、多列索引和空间索引等。ide
建立索引是指在某个表中至少一列中创建索引,以便提升数据库性能。其中,创建索引能够提升表的访问速度。本节经过几种不一样的方式建立索引。其中包括在创建数据库时建立索引、在已经创建的数据表中建立索引和修改数据表结构建立索引。性能
在创建数据表时能够直接建立索引,这种方式比较直接,且方便、易用。优化
基本语法结构以下:code
create table table_name( 属性名 数据类型[约束条件], 属性名 数据类型[约束条件] …… 属性名 数据类型 [UNIQUE | FULLTEXT | SPATIAL ] INDEX }KEY [别名]( 属性名1 [(长度)] [ASC | DESC]) );
普通索引排序
create table t_dept(
no int not null primary key,
name varchar(20) null,
sex varchar(2) null,
info varchar(20) null,
index index_no(no)
)
show index from info; 查看索引索引
惟一索引资源
create table t_dept(
no int not null primary key,
name varchar(20) null,
sex varchar(2) null,
info varchar(20) null,
unique index index_no(no)
);it
全文索引
create table t_dept(
no int not null primary key,
name varchar(20) null,
sex varchar(2) null,
info varchar(20) null,
fulltext index index_no(no);
多列索引
create table t_dept(
no int not null primary key,
name varchar(20) null,
sex varchar(2) null,
info varchar(20) null,
key index_no_name(no,name)
);
在MySQL中,不但能够在用户建立数据表时建立索引,用户也能够直接在已经建立的表中,在已经存在的一个或几个字段建立索引。
其基本的命令结构以下:
CREATE [UNIQUE | FULLTEXT |SPATIAL ] INDEX index_name
ON table_name(属性 [(length)] [ ASC | DESC]);
普通索引
create index index_name
on t_dept(name);
惟一索引
create unique index index_name
on t_dept(name);
全文索引
create fulltext index index_name
on t_dept(name);
多列索引
create index index_name_no
on t_dept(name,no)
修改已经存在表上的索引。能够经过ALTER TABLE语句为数据表添加索引
基本结构以下:
ALTER TABLE table_name ADD [ UNIQUE | FULLTEXT |SPATIAL ] INDEX index_name(属性名 [(length)] [ASC | DESC]);
普通索引
alter table t_dept
add index index_name(name);
惟一索引
alter table t_dept
add unique index index_name(name);
全文索引
alter table t_dept
add fulltext index_name(name);
多列索引
alter table t_dept
add index index_name_no(name,no);
在MySQL中,建立索引后,若是用户再也不须要该索引,则能够删除指定表的索引。由于这些已经被创建且不常使用的索引,一方面可能会占用系统资源,另外一方面也可能致使更新速度降低,这极大地影响了数据表的性能。因此,在用户不须要该表的索引时,能够手动删除指定索引。其中删除索引能够经过DROP语句来实现。
基本的命令以下:
DROP INDEX index_name ON table_name;