索引是一个列表,这个列表中包含了某个表中一列或若干列的集合以及这些值的记录在数据表中存储位置的物理地址。索引是依赖于表创建的,提供了数据库中编排表中数据的内部方法。数据库
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;