索引是一個列表,這個列表中包含了某個表中一列或若干列的集合以及這些值的記錄在數據表中存儲位置的物理地址。索引是依賴於表創建的,提供了數據庫中編排表中數據的內部方法。數據庫
1.索引的做用ide
(1)能夠加快數據的檢索速度,這也是建立索引的最主要緣由。spa
(2)經過建立惟一性索引,能夠確保表中每一行數據的惟一性。3d
(3)能夠加速表和表之間的鏈接,特別有利於實現數據的參照完整性。code
(4)在使用分組和排序子句進行數據檢索時,能夠顯著減小查詢中分組和排序的時間。blog
創建索引的通常原則以下:排序
(1)對常常用來查詢數據記錄的字段創建索引。索引
(2)對錶中的主鍵字段創建索引。ci
(3)對錶中的外鍵字段創建索引。table
(4)對在查詢中用來鏈接表的字段創建索引。
(5)對常常用來做爲排序基準的字段創建索引。
(6)對查詢中不多涉及的字段、重複值比較多的字段不創建索引。
2.索引的分類
MySQL的索引包括普通索引、惟一性索引、主鍵索引和全文索引,它們存儲於B樹中,只有空間索引使用R樹,同時MEMORY表還支持哈希索引。
使用CREATE INDEX語句能夠在一個已經存在的表上建立索引,其語法格式以下:
1 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX <索引名稱> 2 [USING index_type] 3 ON <表名> (索引字段[ASC|DESC][,...]);
例:爲數據庫D_sample中的student表的學號建立一個惟一性索引,索引排列順序爲降序。
1 use D_sample; 2 3 create unique index istudent 4 on student(學號 desc);
例:爲數據庫D_sample中的sc表的學號、課程號建立複合索引。
1 alter table sc add index isc (學號,課程號);
例:爲book表的內容摘要建立全文索引。
1 create table book 2 (isbn char(13) primary key, 3 書名 char(100) not null, 4 內容摘要 text not null, 5 單價 decimal(6,2), 6 出版日期 date not null, 7 fulltext index ibook (內容摘要) 8 ) engine=myisam default charset=gbk;
建立好索引後,能夠經過SHOW CREATE TABLE語句查看數據表的索引信息,其語法格式以下:
1 SHOW CREATE TABLE <表名>;
例: 查看D_sample數據庫中student表的索引信息
1 show create table student;
使用DROP INDEX語句或ALTER TABLE語句刪除索引。
語法格式以下:
1 DROP INDEX <索引名> ON <表名>;
例:刪除student表上的istudent索引。
1 drop index istudent on student;
例: 刪除sc表上的isc索引。
1 alter table sc 2 drop index isc;