• 索引


    索引的引入

      索引定义:索引是由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度;
      类似于图书的目录,方便快速定位,寻找指定的内容;

    索引的优缺点

      优点:提高查询数据的速度;
      缺点:创建和维护索引的时间增加了;

    MySQL常用的索引

    普通索引INDEX:加速查找
    
    唯一索引:
        -主键索引PRIMARY KEY:加速查找+约束(不为空、不能重复)
        -唯一索引UNIQUE:加速查找+约束(不能重复)
    
    联合索引:
        -PRIMARY KEY(id,name):联合主键索引
        -UNIQUE(id,name):联合唯一索引
        -INDEX(id,name):联合普通索引
    #我们可以在创建上述索引的时候,为其指定索引类型,分两类
    hash类型的索引:查询单条快,范围查询慢
    btree类型的索引:b+树,层数越多,数据量指数级增长(我们就用它,因为innodb默认支持它)
    
    #不同的存储引擎支持的索引类型也不一样
    InnoDB 支持事务,支持行级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;
    MyISAM 不支持事务,支持表级别锁定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;
    Memory 不支持事务,支持表级别锁定,支持 B-tree、Hash 等索引,不支持 Full-text 索引;
    NDB 支持事务,支持行级别锁定,支持 Hash 索引,不支持 B-tree、Full-text 等索引;
    Archive 不支持事务,支持表级别锁定,不支持 B-tree、Hash、Full-text 等索引;

    创建索引

      创建表的时候创建索引:

      CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件],
      属性名 数据类型 [完整性约束条件],
      ....
      属性名 数据类型
      [UNIQUE | FULLTEXT | SPATIAL ] INDEX| KEY
      [别名] (属性名 1 [(长度)] [ASC | DESC])
      );

    创建普通索引

    CREATE TABLE t_user1(id INT ,
                         userName VARCHAR(20),
                         PASSWORD VARCHAR(20),
                         INDEX (userName)
                     );


    创建唯一性索引

    CREATE TABLE t_user2(id INT ,
                         userName VARCHAR(20),
                         PASSWORD VARCHAR(20),
                         UNIQUE INDEX index_userName(userName)
                     );


    创建全文索引

    创建单列索引

    创建多列索引

    CREATE TABLE t_user3(id INT ,
                         userName VARCHAR(20),
                         PASSWORD VARCHAR(20),
                         INDEX index_userName_password(userName,PASSWORD)
                     );


     创建空间索引

    在已经存在的表上创建索引

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

    CREATE     INDEX index_userName ON t_user4(userName);
    CREATE     UNIQUE INDEX index_userName ON t_user4(userName);
    CREATE  INDEX index_userName_password ON t_user4(userName,PASSWORD);

    用ALTER TABLE语句来创建索引

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

    ALTER TABLE t_user5 ADD INDEX index_userName(userName);
    ALTER TABLE t_user5 ADD UNIQUE INDEX index_userName(userName);
    ALTER TABLE t_user5 ADD INDEX index_userName_password(userName,PASSWORD);

    删除索引
      DROP INDEX 索引名 ON 表名 ;

    DROP INDEX index_userName ON t_user5;
    DROP INDEX index_userName_password ON t_user5;
  • 相关阅读:
    接口设计安全
    PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解
    OpenSSL使用小结
    sql的三种去重
    关于if语句&&运算符先判断空异常
    关于数据库可为null的datetime 字段
    sql server去重
    asp.net updatepanel 局部更新后调用js
    级联 -- 逻辑
    关于滑动验证的思路构思
  • 原文地址:https://www.cnblogs.com/linbin7/p/11930737.html
Copyright © 2020-2023  润新知