认识和使用索引

Posted lilian12

tags:

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

索引

5.1 索引的概念

数据库的索引好比新华字典的音序表,它是对数据库表中一列或多列的值进行排序后的一种结构,其作用就是提高表中数据的查询速度。

注:创建表的时候创建索引


 

 CREATE TABLE 表名

         (

           字段名 数据类型[完整性约束条件],

           字段名 数据类型[完整性约束条件],

                ......

         字段名 数据类型

    [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY

           [别名] (字段名1 [(长度)]) [ASC|DESC])

           );


 

注: UNIQUE:可选参数,表示唯一性约束

     FULLTEXT:可选参数,表示全文约束

     SPATIAL:可选参数,表示空间约束

     INDEX和KEY:用来表示字段的索引,二者选一即可

     别名:可选参数,表示创建的索引的名称

     字段名1:指定索引对应字段的名称

     长度:可选参数,用于表示索引的长度

     ASC和DESC:可选参数,其中,ASC表示升序排列,DESC表示降序排列

     在上述语法格式中,[ ]中都是可选参数


 

5.2 创建索引

创建索引的方式有三种,具体如下:

5.2.1 创建表的时候创建索引:

(1)普通索引

如:在t1表中id字段上建立索引,SQL语句如下:

CREATE TABLE t1

 (

 id INT,

 name VARCHAR(20),

 score FLOAT,

 INDEX (id)

 );

(2)唯一性索引

如:创建一个表名为t2的表,在表中的id字段上建立索引名为unique_id的唯一性索引,并且按照升序排列,SQL语句如下:

CREATE TABLE t2

 (

 id INT NOT NULL ,

 name VARCHAR(20) NOT NULL ,

 score FLOAT ,

 UNIQUE INDEX unique_id(id ASC)

 );

(3)全文索引

如:创建一个表名为t3的表,在表中的name字段上建立索引名为fulltext_name的全文索引, SQL语句如下:

CREATE TABLE t3

(

 id INT NOT NULL ,

 name VARCHAR(20) NOT NULL ,

 score FLOAT ,

 FULLTEXT INDEX fulltext_name(name)

 );

(4)单列索引

如:创建一个表名为t4的表,在表中的name字段上建立索引名为single_name的单列索引, SQL语句如下:

CREATE TABLE t4

(

 id INT NOT NULL ,

 name VARCHAR(20) NOT NULL ,

 score FLOAT ,

 INDEX single_name(name (20) )

 );

(5)多列索引

如:创建一个表名为t5的表,在表中的id和name字段上建立索引名为multi的多列索引, SQL语句如下:

CREATE TABLE t4

(

 id INT NOT NULL ,

 name VARCHAR(20) NOT NULL ,

 score FLOAT ,

 INDEX multi(id,name (20) )

 );

(6)* 空间索引

如:创建一个表名为t6的表,在空间类型为GEOMETRY的字段上创建空间索引,SQL语句如下:

CREATE TABLE t6

 (

 id INT,

 space GEOMETRY NOT NULL,

 SPATIAL INDEX sp(space)

 )ENGINE=MyISAM;

 

注:创建空间索引时,所在字段的值不能为空值,并且表的存储引擎为MyISAM。

 

5.2.2 使用CREATE INDEX 语句在已经存在的表上创建索引

若想在一个已经存在的表上创建索引,可以使用CREATE INDEX语句,CREATE INDEX语句创建索引的具体语法格式如下所示:

          CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名ON 表名 (字段名 [(长度)] [ASC|DESC]);

如:在t1表中的id字段上建立一个名称为unique_id的唯一性索引,SQL语句如下所示:

          CREATE UNIQUE INDEX unique_id ON ti (id);

5.2.3 使用ALTER TABLE语句在已经存在表上创建索引

在已经存在的表中创建索引,使用ALTER TABLE语句在已经存在表上创建索引的语法格式如下所示:

          ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT|SPATIAL]  INDEX 索引名 (字段名 [(长度)] [ASC|DESC]);

如:在t1表中的id字段上建立一个名称为unique_id的唯一性索引,SQL语句如下:

          ALTER TABLE t1 ADD UNIQUE unique_id (id);

注:使用SHOW CREATE TABLE语句查看表的结构, SQL代码如下:

          SHOW CREATE TABLE 表名;

注:为了查看索引是否被使用,可以使用EXPLAIN语句进行查看,SQL代码如下:

          EXPLAIN SELECT * FROM 表名 [WHERE 字段名=1];

5.3 删除索引

删除索引的方式有两种,具体如下:

1. 使用ALTER TABLE删除索引

使用ALTER TABLE删除索引的基本语法格式如下所示:

          ALTER TABLE 表名 DROP INDEX 字段名;

2. 使用DROP INDEX删除索引

使用DROP INDEX删除索引的基本语法格式如下所示

          DROP INDEX 索引名 ON 表名;

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

JavaScript中对数组和数组API的认识

MySQL认识索引

MySQL 聚簇索引和非聚簇索引的认识

Oracle 索引之b*tree索引初步认识

快速认识Pandas的10大索引

〈二〉ElasticSearch的认识:索引类型文档