索引

Posted 且听风吟-wuchao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了索引相关的知识,希望对你有一定的参考价值。

简介

索引存储类型:B型树索引、哈希索引

索引分类:普通索引、唯一性索引、全文索引、单列索引、多列所以、空间索引

创建索引

create table 表名 (属性名 数据类型 [约束条件],

属性名 数据类型 [约束条件],

……

[unique|fulltext|spatial] index | key [别名] (属性名1 [(长度)] [asc|desc])

);

1.unique是可选参数,表示唯一性索引

2.fulltext是可选参数,表示全文索引

3.spatial是可选参数,表示空间索引

4.index和key用来指定字段为索引,二者功能相同,二选一即可

5.别名为可选参数

6.属性1指定索引对应的字段名称,该字段必须是已定义的

7.长度是可选参数,指定索引长度,字段是字符串时才可以使用

8.asc和desc是可选参数,前者表示升序,后者表示降序

   

创建普通索引

普通索引可以创建在任何数据类型上

mysql> create table index1(id int,name varchar(20),sex boolean,index index_id (id));

   

查看结果:

mysql> create table index1(id int,name varchar(20),sex boolean,index index_id (id));

   

   

使用explain语句查看索引是否被使用:

   

创建唯一性索引

mysql> create table index2(id int unique,name varchar(20),unique index index2_id (id asc));  

mysql> show create table index2;

   

创建全文索引

mysql> create table index3(id int,info varchar(20),fulltext index index3_id (info))engine=MyISAM;

   

mysql> show create table index3;

   

注:InnoDB不支持全文索引

创建单列索引

单列索引是在表中的单个字段创建索引

mysql> create table index4(id int,subject varchar(30),index index4_st(subject(10)));

   

mysql> show create table index4;

   

创建多列索引

mysql> create table index5(id int,name varchar(20),sex char(4),index index5_ns(name,sex));

   

创建空间索引

此时存储引擎必须是MyISAM,索引字段必须非空约束 

mysql> create table index6(id int,space geometry not null,spatial index index6_sp(space))engine=MyISAM;

在已有的表上创建索引

形式1:

create [unique|fulltext|spatial] index 索引名on 表名 (属性名 [(长度)] [asc|desc]);

形式2:

alter table 表名 add index 索引名 (属性名 [(长度)] [asc|desc]);

删除索引

drop index 索引名 on 表名;

以上是关于索引的主要内容,如果未能解决你的问题,请参考以下文章

5.索引简介

Lucene底层原理和优化经验分享-Lucene简介和索引原理

MySQL隐形索引简介

普通索引和唯一索引的区别性能差异,以及其他索引简介

ES 聚合索引简介

数据库索引简介