Skip to content
目录概览

索引如何创建、删除?

  • 添加索引

    • 第一种方式: 在执行CREATE TABLE时创建索引

      sql
      CREATE TABLE user_index2 (
      	id INT auto_increment PRIMARY KEY,
      	first_name VARCHAR (16),
      	last_name VARCHAR (16),
      	id_card VARCHAR (18),
      	information text,
      	KEY name (first_name, last_name),
      	FULLTEXT KEY (information),
      	UNIQUE KEY (id_card)
      );
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
    • 第二种方式: 使用ALTER TABLE命令去增加索引

      sql
      ALTER TABLE table_name ADD INDEX index_name (column_list);
      
      1

      ALTER TABLE用来创建普通索引、UNIQUE索引或PRIMARY KEY索引。

      其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。

      索引名index_name可自己命名,缺省时,MySQL将根据第一个索引列赋一个名称。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。

    • 第三种方式: 使用CREATE INDEX命令创建

      sql
      CREATE INDEX index_name ON table_name (column_list);
      
      1

      CREATE INDEX可对表增加普通索引或UNIQUE索引。(但是,不能创建PRIMARY KEY索引)

  • 删除索引 根据索引名删除普通索引、唯一索引、全文索引:alter table 表名 drop KEY 索引名

    sql
    alter table user_index drop KEY name;
    alter table user_index drop KEY id_card;
    alter table user_index drop KEY information;
    
    1
    2
    3

    删除主键索引:alter table 表名 drop primary key(因为主键只有一个)。这里值得注意的是,如果主键自增长,那么不能直接执行此操作(自增长依赖于主键索引) 需要取消自增长再行删除:

    sql
    alter table user_index
    -- 重新定义字段
    MODIFY id int,
    drop PRIMARY KEY
    
    1
    2
    3
    4

但通常不会删除主键,因为设计主键一定与业务逻辑无关。