1 索引类型

  1. 普通索引(值可以重复)
  2. 单列索引(索引就是利用单个列生成)
  3. 多列索引(索引使用多个列生成)
  4. 主键索引 (值唯一,并且不可以为空)
  5. 唯一索引 (值唯一,可以为空,且可以有多个空)
  6. 全文索引

1.1 显示一个表上的索引信息

SHOW INDEX FROM 【表名称】\G

1.2 添加索引

1.2.1 添加主键索引

  1. 命令格式

    I) 创建时直接添加
    当创建一张表时,把某个列设为主键(primary key)的时候,则该列就是主键索引

    create table aaa
    (id int unsigned primary key auto_increment ,
    name varchar(32) not null defaul ‘’);

    II) 对现有表添加
    如果创建表时,没有指定主键索引,也可以在创建表后,再添加。

    alter table 【表名】 add primary key (【列名】 );

1.2.2 添加普通索引

  1. 命令格式

    一般来说,普通索引的创建,是先创建表,然后再对已经存在的表创建普通索引。 I) 单列索引:索引就是利用单个列生成

    create index 【索引名】 on 【表】 (【列名1】);

    II) 多列索引:索引使用多个列生成

    create index 【索引名】 on 【表】 (【列名1,列名2】);

1.2.3 添加唯一索引

当表的某列被指定为unique约束时,这列就是一个唯一索引

  1. 命令格式

    I) 创建表时直接添加

    create table 【表名称】(id int primary key auto_increment , name varchar(32) unique);

    II) 对现有的表添加

    create unique index 【索引名】  on 【表名】 (【列表..】);

1.3 删除索引

alter table 【表名】 drop index 【索引名】;

1.4 修改索引

修改索引需要通过先删除,再添加的形式实现。

1.5 索引的代价

  1. 占用磁盘空间
  2. 对dml操作有影响,变慢

1.6 适合添加索引的列

满足以下条件的字段,才应该创建索引。

  1. 肯定在where条经常使用
  2. 该字段的内容不是唯一的几个值(sex)
  3. 字段内容不是频繁变化.