索引概述
在MySQL中,索引由数据表中一列或多列组合而成,创建索引的目的是为了优化数据库的查询速度。其中,用户创建的索引指向数据库中具体数据所在位置。当用户通过索引查询数据库中的数据时,不需要遍历所有数据库中的所有数据。这样,大幅度提高了查询效率。
MySQL索引概述
1.索引是一种将数据库中单列或者多列的值进行排序的结构。应用索引,可以大幅度提高查询的速度。
2.用户通过索引查询数据,不但可以提高查询速度,也可以降低服务器的负载。
3.应用MySQL数据库时,并非用户在查询数据的时候,总需要应用索引来优化查询。
4.整体来说,索引可以提高查询的速度,但是会影响用户操作数据库的插入操作。
MySQL索引分类
MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。
创建索引
创建索引是指在某个表中至少一列中建立索引,以便提高数据库性能。其中,建立索引可以提高表的访问速度。本节通过几种不同的方式创建索引。其中包括在建立数据库时创建索引、在已经建立的数据表中创建索引和修改数据表结构创建索引。
在建立数据表时创建索引
在建立数据表时可以直接创建索引,这种方式比较直接,且方便、易用。
基本语法结构如下:
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)
);
全文索引
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;
来源:51CTO
作者:低调的男孩
链接:https://blog.51cto.com/13760351/2477651