MySQL索引
1.索引的含义
索引是创建在表上的,是对数据库表中一列或者多列的值进行排序的一种结构。索引可以提高查询速度
索引有两种存储类型:B型树(BTREE)索引 和 哈希(HSAH)索引;
2.索引的分类
1)普通索引
2)唯一性索引
设置唯一索引时,限制该索引的值必须是唯一的**
3)全文索引
全文索引只能在 CHAR VARCHAR或者TEXT类型的字段上建立。
4)单列索引
单列索引只根据该字段进行索引。可以是普通索引唯一性索引还可以是全文索引。
5)多列索引
多个字段上建立的索引
6)空间索引
只能建立在空间上的索引 目前只有MyISAM存储引擎支持空间索引。
索引的创建:
index
1.创建表时创建索引
create table 表名(属性名 数据类型[完整性约束条件],
属性名 数据类型[完整性约束条件]
...
[unique | fulltext|spatial ] index|key
[别名] (属性名1 [长度]) [asc| desc])
);
unique(唯一索引) fulltext(全文索引) spatial(空间) 都是可选参数。
别名是可选参数的 给索引创建的新名称,属性名1是指定索引对应字段的名称,长度仅限于字符串长度。
asc :升序排序 desc 降序排序
1)创建普通索引
create table index(id int,
name varchar(20),
idex (id)
);
2)创建唯一性索引
create table index1( id int unique,
name varchar(20),
unique index index1_t(id asc)
);
3)创建全文索引
只能在varchar ,char ,text 上建立,q且存储引擎为MyISAM
create table index2(id int,
name varchar(20),
fulltext index index2_t(name)
)engine =MyISAM;
4)创建单列索引
create table index3(id int ,
name carchar(20),
index idex3_t(name(20)
);
5)创建多列索引
create table index3(id int,
name varchar(20),
index index3_t(id,name)
);
6)创建空间索引
create table index4(id int ,
text1 geometry not null,
spatial index index4_t(text1)
);engine=MyISAM;
2. 在已经存在的表上创建索引
create [unique | fulltext |spatial] index 索引名
on 表名 (属性名 [(长度)]) [asc |desc]);
alter table 语句创建索引
alter table 表名 add [unique | fulltext |spatial ] idnex
索引名 (属性名[(长度)])[asc | desc ]);