创建表的索引
索引
索引概述
索引是一个列表,这个列表中包含了某个表中一列或若干列的集合以及这些值的记录在数据表中存储位置的物理地址。索引是依赖于表建立的,提供了数据库中编排表中数据的内部方法。
1.索引的作用
(1)可以加快数据的检索速度,这也是创建索引的最主要原因。
(2)通过创建唯一性索引,可以确保表中每一行数据的唯一性。
(3)可以加速表和表之间的连接,特别有利于实现数据的参照完整性。
(4)在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
建立索引的一般原则如下:
(1)对经常用来查询数据记录的字段建立索引。
(2)对表中的主键字段建立索引。
(3)对表中的外键字段建立索引。
(4)对在查询中用来连接表的字段建立索引。
(5)对经常用来作为排序基准的字段建立索引。
(6)对查询中很少涉及的字段、重复值比较多的字段不建立索引。
2.索引的分类
MySQL的索引包括普通索引、唯一性索引、主键索引和全文索引,它们存储于B树中,只有空间索引使用R树,同时MEMORY表还支持哈希索引。
创建索引
1.使用CREATE INDEX语句创建索引
使用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);
2.使用ALTER TABLE语句创建索引
例:为数据库D_sample中的sc表的学号、课程号创建复合索引。
1 alter table sc add index isc (学号,课程号);
3.使用CREATE TABLE语句创建索引
例:为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语句删除
语法格式如下:
1 DROP INDEX <索引名> ON <表名>;
例:删除student表上的istudent索引。
1 drop index istudent on student;
2.使用ALTER TABLE语句删除
例: 删除sc表上的isc索引。
1 alter table sc 2 drop index isc;