MYSQL 數據庫索引

索引概述

在MySQL中,索引由數據表中一列或多列組合而成,建立索引的目的是爲了優化數據庫的查詢速度。其中,用戶建立的索引指向數據庫中具體數據所在位置。當用戶經過索引查詢數據庫中的數據時,不須要遍歷全部數據庫中的全部數據。這樣,大幅度提升了查詢效率。數據庫

MySQL索引概述

1.索引是一種將數據庫中單列或者多列的值進行排序的結構。應用索引,能夠大幅度提升查詢的速度。
2.用戶經過索引查詢數據,不但能夠提升查詢速度,也能夠下降服務器的負載。
3.應用MySQL數據庫時,並不是用戶在查詢數據的時候,總須要應用索引來優化查詢。
4.總體來講,索引能夠提升查詢的速度,可是會影響用戶操做數據庫的插入操做。服務器

MySQL索引分類

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;

相關文章
相關標籤/搜索