MySQL 索引的使用

种类

  • 普通索引
    最基本的索引,没有任何限制。

  • 唯一索引
    与普通索引的区别是,索引值必须唯一,但允许有空值。

  • 主键索引
    与唯一索引的区别是,一个表只能有一个主键索引,且不允许有空值。

  • 组合索引
    由多个字段组成的索引,可以是普通组合索引,唯一组合索引,主键组合索引(复合主键)。
    最左前缀原则。

创建索引

  • 直接创建索引
    create index i_name on mytable(name); //普通索引
    create unique index i_phone on mytable(phone(20)); //唯一索引
    create index i_name_phone on mytable(name(20),phone(20)); //普通组合索引
    create unique index i_name_phone on mytable(name(20),phone(20)); //唯一组合索引
    
  • 创建表时创建索引
    create table mytable (
      id int auto_increment not null,
      name varchar(255),
      password varchar(255),
      phone varchar(255),
      email varchar(255),
      primary key(id), //主键索引
      index i_name (name), //普通索引
      unique [index] i_phone (phone(20)) //唯一索引
    );
    
  • 修改表结构创建
    alter table mytable add index i_name (name); //普通索引
    alter table mytable add unique [index] i_phone (phone(20)); //唯一索引
    

删除索引

drop index i_name on mytable;

alter table mytable drop index i_name;

其他操作

  • 查看表的索引
    show index from mytable;
    
    show keys from mytable;
    
  • 查看索引使用情况
    explain + 查询语句;