zoukankan      html  css  js  c++  java
  • 索引

    索引的引入

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

    索引的优缺点

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

    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;
  • 相关阅读:
    mybatis 乐观锁和逻辑删除
    JAVA实现DES加密实现详解
    axios 全攻略之基本介绍与使用(GET 与 POST)
    Ajax json 数据格式
    CentOS 7安装Hadoop 3.0.0
    <p>1、查询端口号占用,根据端口查看进程信息</p>
    CentOS查询端口占用和清除端口占用的程序
    Spring Boot Maven 打包可执行Jar文件!
    linux下运行jar
    maven 工程mybatis自动生成实体类
  • 原文地址:https://www.cnblogs.com/linbin7/p/11930737.html
Copyright © 2011-2022 走看看