0%

索引

北国风光,千里冰封,万里雪飘。望长城内外,惟余莽莽;大河上下,顿失滔滔。山舞银蛇,原驰蜡象,欲与天公试比高。须晴日,看红装素裹,分外妖娆。江山如此多娇,引无数英雄竞折腰。惜秦皇汉武,略输文采;唐宗宋祖,稍逊风骚。一代天骄,成吉思汗,只识弯弓射大雕。俱往矣,数风流人物,还看今朝。 —— 毛泽东 《沁园春·雪》

一、定义

  1. 索引是加速查询的数据结构,是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址。在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。
    • 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样

二、分类

  1. 按聚簇

    • 聚簇索引(主键索引)
    • 非聚簇索引(普通索引)
  2. 按字段

    • 单列索引
    • 联合索引
  3. 按类型

    • 主键索引
    • 唯一索引
    • 普通索引
    • 全文索引

三、使用

  1. 添加索引

    • 直接添加索引 CREATE INDEX indexName ON tb(columnName(length))
    • 如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定length。
    • 不可直接添加主键索引
    • 修改表时添加 ALTER TABLE tb ADD 索引 (columnName)
    • PRIMARY KEY | UNIQUE index_name | INDEX index_name | FULLTEXT index_name
    • 创建表时添加
    1
    2
    3
    4
    5
    CREATE TABLE tb(  
    ID INT NOT NULL PRIMARY KEY auto_increment,
    username VARCHAR(16) NOT NULL,
    INDEX [indexName] (username(length))
    );
  2. 删除索引

    • 直接删除 DROP INDEX [indexName] ON tb
    • 修改删除 ALTER TABLE tb DROP INDEX indexName;
    • 删除主键 ALTER TABLE tb DROP PRIMARY KEY
  3. 查看索引 SHOW INDEX FROM tb;\G