zoukankan      html  css  js  c++  java
  • 认识和使用索引

    任务五:认识和使用索引

    索引

    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 表名;

  • 相关阅读:
    Typora上传图片设置
    SpringBoot入门详细教程
    vue
    我才学习到的严格模式(越往后看,越感觉复杂啊)
    js中三种定义变量的方式const, var, let的区别。
    冒泡
    tab切换
    日历
    jquery实现拖拽进度条并显示百分比的特效
    抽奖代码
  • 原文地址:https://www.cnblogs.com/zmy2001/p/11870987.html
Copyright © 2011-2022 走看看