在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;