Mysql基础知识:索引

Mysql 索引

1. 索引的概念

  索引是创建在表上的,对数据库表中的一列或多列的值进行排序的一种结构。

  索引有2种存储类型:B型树索引 和 哈希索引。InnoDB和MyISAM存储引擎支持B型树索引,MEMORY存储引擎支持哈希索引。

  优点:提高检索数据的速度。对于有依赖关系的子表和父表之间的联合,可提高查询速度;使用分组和排序子句进行数据查询,可显著节省查询时间。

  缺点:创建和维护需要耗费时间,耗费的时间随着数据量的增加而增加;索引需要占用物理空间;增加、修改和删除索引时,需要动态的维护索引,会造成数据维护速度降低。

2.索引的分类

  1)普通索引:

    不加任何限制条件的索引。

  2)唯一性索引:

    UNIQUE参数设置唯一性索引。

  3)全文索引:

    使用FULLTEXT参数设置为全文索引。(全文索引只能创建在CHAR、VARCHAR或TEXT类型字段上)

  4)单列索引:

    为表的单个字段创建索引。

  5)多列索引:

    为表的多个字段创建一个索引。

  6)空间索引:

    使用SPATIAL参数设置。

3. 索引的设计原则

  1)选择唯一性索引;

  2)为经常需要排序、分组和联合操作的字段建立索引;

  3)为常作为查询条件的字段建立索引;

  4)限制索引的数目;

  5)尽量使用数据量少的索引;

  6)尽量使用前缀索引;

  7)删除不再使用或很少使用的索引。

4. 创建索引

  1)创建表的时候创建索引

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

    INDEX和KEY表示指定字段为索引,两者作用相同选其一即可。

    ASC/DESC表示升序排列和降序排列。

  2)为已经存在的表创建索引

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

  3)用ALTER TABLE语句创建索引

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

5. 删除索引

DROP  INDEX   索引名   ON   表名;
原文地址:https://www.cnblogs.com/jx-yangbo/p/6391623.html