一、索引的概念
利用关键字,就是记录的部分数据(某个字段,某些字段,某个字段的一部份),建立与记录位置的对应关系,就是索引。索引的关键字一定是排序的。
二、索引的类型
mysql支持四种索引:
1、主键索引
2、唯一索引
3、普通索引
4、全文索引
无论任何形式的索引,都是通过建立关键字与位置的对应关系来实现的。
差异:对索引关键字的要求不同。
关键字:记录部分数据(某个字段,某些字段,某个字段的一部份)
普通索引(index):对关键字没有要求
唯一索引(unique index):要求关键字不能重复,同时增加唯一约束。
主键索引(primary key):要求关键字不能重复,同时不能为NULL。
全文索引(fulltext key):关键字的来源不是所有字段的数据,而是从字段中提取的特别关键字。
*如果一个索引通过在多个字段上提取的关键字,称之为复合索引。
三、索引的语法
创建:
1、创建表时创建索引
create table student (
id int unsigned not null auto_increment,
name varchar(32) not null default '',
nickname varchar(32) not null default '',
sn char(12) not null default '',
desc text,
primary key (`id`), --主键索引
unique index `ui_sn` (`sn`), --唯一索引
index `name_nickname` (`name`,`nickname`), --复合索引
fulltext index `fi_desc` (`desc`) --全文索引
)engine=myisam charset=utf8;
索引可以起名字,主键索引不能起名字,一个表只能有一个主键索引,其它索引可以有多个。名字可以省略,mysql自动生成。
2、更新表结构时创建索引
alter table student add primary key (`id`);
alter table student add unique index `ui_sn` (`sn`);
alter table student add index `name_nickname` (`name`,`nickname`);
alter table student add fulltext index `fi_desc` ('desc');
*如果表中存在数据,数据符合唯一或主键的约束才能创建成功。
*auto_increment属性,依赖于key。
删除:
alter table student drop primary key;
alter table student drop index `ui_sn`;
alter table student drop index `name_nickname`;
alter table student drop index `fi_desc`;
四、索引的使用
可以通过在select语句前使用explain,来获取该查询语句的执行计划。