索引概述

- **索引定义**

  对数据库表的一列或多列的值进行排序的一种结构(Btree方式)

- **优点**

  加快数据检索速度

- **缺点**

  占用物理存储空间(var/lib/mysql)
  当对表中数据更新时,索引需要动态维护,降低数据维护速度

- **索引示例**

```mysql
1、开启运行时间检测
    mysql>show variables like "%pro%";
    mysql>set profiling=1;
2、执行查询语句
    select name from students where name = 'Tom99999';
3、查看执行时间
    show profiles;
4、在name字段创建索引
    create index name on students(name)
5、再执行查询语句
    select name from students where name = 'Tom88888';
6、查看执行时间
    show profiles;
```

## 索引分类

  普通(MUL)   唯一(UNI)

- **使用规则**

  1、可设置多个字段
  2、普通索引 :字段值无约束,KEY标志为 MUL
  3、唯一索引(unique) :字段值不允许重复,但可为 NULL , KEY标志为 UNI
  4、那些字段创建索引:经常用来查询的字段、where条件判断字段、order by排序的字段

- **创建普通索引and唯一索引**

  1.创建表时

  create table 表名(
  字段名 数据类型,
  字段名 数据类型,
  index(字段名),
  index(字段名),
  unique(字段名)
  );


  2.已有表中创建

    create [unique] index 索引名 on 表名(字段名);

- **查看索引**

   1、desc 表名; --> KEY标志为:MUL 、UNI
  2、show index from 表名\G;

- **删除索引**

  drop index 索引名 on 表名;

#### **主键(PRI)and自增长(auto_increment)**

  - **使用规则**

  1、只能有一个主键字段
  2、所带约束 :不允许重复,且不能为NULL
  3、KEY标志 :PRI
  4、通常设置记录编号字段id,能唯一锁定一条记录

  - **创建**

    1.创建表添加主键

          create table student(id int primary key auto_increment)auto_increment=10000;##设置自增长起始值

      2.已有表添加主键

     alter table 表名 add primary key(id);

    3.已有表操作自增长属性

     alter table 表名 modify id int auto_increment;

    4.已有表重新指定起始值

     alter table 表名 auto_increment=20000;

  - **删除**

    删除自增长属性(modify)

      alter table 表名 modify id int; 

    删除主键索引

      alter table 表名 drop primary key;(需要先删除自增长属性才能删除主键)    

 

posted @ 2019-06-15 15:59  爱吃西红柿的猫  阅读(112)  评论(0编辑  收藏  举报