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;
  • 相关阅读:
    Allegro PCB Design GXL (legacy) 使用slide无法将走线推挤到焊盘的原因
    OrCAD Capture CIS 16.6 导出BOM
    Altium Designer (17.0) 打印输出指定的层
    Allegro PCB Design GXL (legacy) 将指定的层导出为DXF
    Allegro PCB Design GXL (legacy) 设置十字大光标
    Allegro PCB Design GXL (legacy) 手动更改元器件引脚的网络
    magento产品导入时需要注意的事项
    magento url rewrite
    验证台湾同胞身份证信息
    IE8对css文件的限制
  • 原文地址:https://www.cnblogs.com/linbin7/p/11930737.html
Copyright © 2011-2022 走看看