• 创建索引


    索引:
        数据库的索引好比新华字典的音序表,它对数据库库表中一列或多列的值进行排序后的一种结构,其作用就是提高表中的数据查询速度
        普通索引:可以创建在任何数据类型中,其值是否唯一和非空没有固定的要求
        唯一性索引:唯一性索引是由unique定义的索引,该索引所在的字段的值必须是唯一的
        全文索引: 是由FULLTEXT定义的索引,它只能创建在char,varchar或text类型的字段上,而且,现在只有MYISAM存储引擎支持全文索引
        单列索引: 单列索引指的是在表中单个字段上创建索引,它可以是普通索引,唯一索引或者全文索引,只要保证该索引只对应表中一个字段即可
        多列索引: 多列索引指的是在表中多个字段上创建索引,只有在查询语句中使用了这些字段中第一个字段时,该索引才会被使用
        空间索引: 空间索引是由SPATIAL定义的索引,它只能创建在空间数据类型的字段上
        
        总结:需要注意的是,虽然索引可以提高数据的查询速度,但是索引会占用一定的磁盘空间,并且在创建和维护索引时,其消耗的时间时随着数据量的增加而增加的。因此,使用索引时,应该综合考虑索引的优点和缺点
        
    
    创建索引:
        1. 创建表的时候创建索引
            CREATE TABLE 表名(
                字段名  数据类型[完整性约束条件]
                字段名  数据类型[完整性约束条件]
                ...
                字段名  数据类型
                [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [别名] (字段名1 [(长度)] [ASC|DESC]) 
            );
            
        关于以上语法的相关解释具体如下:
        * UNIQUE     可选参数,表示唯一性约束
          FULLTEXT   可选参数,表示全文约束
          SPATIAL    可选参数,表示空间约束
          INDEX和KEY :用来表示字段的索引,二者选一即可
          别名: 可选参数,表示创建的索引的名称
          字段名1: 指定索引对应字段的名称
          长度:可选参数,用于表示索引的长度
          ASC|DESC 可选参数,其中,ASC表示升序排列,DESC表示降序排序
          
          常用单词:
          MUL: multiple
          PRI:primary
          UNI: unique
          
          
              ~创建一个普通索引
               下面的例子中INDEX前面没有前缀,所以他是一个普通索引
        CREATE TABLE t1(
            id INT,
            name VARCHAR(20),
            score FLOAT,
            INDEX (id)
        );
            检查是否使用了索引,explain 命令可以查看后面的查询语句是如何执行的
            explain select * from t1 where id=1;      
    
    
              ~创建一个唯一索引
              使用unique关键字创建
        CREATE TABLE t2(
            id INT,
            name VARCHAR(20),
            score FLOAT,
            UNIQUE INDEX (id)
        );      
              检查创建效果
              show create table t2;
              
              
              ~创建全文索引
              全文索引一定要是文本类型,引擎一定要是MyISAM;
        CREATE TABLE t3(
            id INT,
            name VARCHAR(20),
            score FLOAT,
            FULLTEXT INDEX fulltext_name(name)
        )ENGINE=MyISAM;
    
            检查创建效果
            show create table t3;   
    
    
              ~创建单列索引
              前面的几个例子都是单列索引
        CREATE TABLE t4(
            id INT,
            name VARCHAR(20),
            score FLOAT,
            INDEX single_name(name(20))
        );      
            检查创建效果
            show create table t4;
            
             ~创建多列索引
             第一列被用作查询条件时,才会导致多列索引被使用
        CREATE TABLE t5(
            id INT,
            name VARCHAR(20),
            score FLOAT,
            INDEX multiple_name(id,name(20))
        );      
            检查创建效果
            explain select * from t5 where id=1;
            
            
            ~创建空间索引
            空间索引只能用在几个特定的数据类型上,并且数据库引擎必须时MyISAM
        CREATE TABLE t6(
            id INT,
            space GEOMETRY NOT NULL,
            SPATIAL INDEX sp(space)
        )ENGINE=MyISAM;
            检查创建效果
            show create table t6;
        
        
    2. 使用CREATE INDEX 语句在已经存在的表上创建索引
            CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 on 表名 (字段名1 [(长度)] [ASC|DESC]);
    
        先创建一个表    
        CREATE TABLE book(
            bookid INT NOT NULL,
            bookname VARCHAR(255) NOT NULL,
            authors VARCHAR(255) NOT NULL,
            info VARCHAR(255) NULL,
            comment VARCHAR(255) NULL,
            publicyear YEAR NOT NULL
        );
            
              ~创建一个普通索引在bookid这一列上
              create index index_id on book(bookid)
              ~创建一个唯一索引在bookid这一列上
              create unique index qunique_id on book(bookid)
              ~创建一个多列索引在bookid这一列上
              create index multiple_index on book(authors(20),info(20))
              ~创建全文索引,注意全文索引只能加在引擎时MyISAM的表上
              drop table book;
    CREATE TABLE book(
        bookid INT NOT NULL,
        bookname VARCHAR(255) NOT NULL,
        authors VARCHAR(255) NOT NULL,
        info VARCHAR(255) NULL,
        comment VARCHAR(255) NULL,
        publicyear YEAR NOT NULL
    )ENGINE=MyISAM;
              
            CREATE FULLTEXT index  ftindex on book (bookname)
              
              
              
              
  • 相关阅读:
    21.面向对象:多态与多态性、面向对象进阶:内置方法,反射。异常处理
    mysql 复习
    Python之math模块
    mysql数据类型转换
    Remmina
    JWT校验流程源码
    JWT签发token
    elasticsearch使用
    Flask基础
    初识Flask
  • 原文地址:https://www.cnblogs.com/zhuhaofeng/p/15725909.html
Copyright © 2020-2023  润新知