索引的作用

  • 主要是为了提高检索数据的速度
  • 还可以保证字段的唯一性,从而实现数据库的完整性

索引的分类

  1. 普通索引
  2. 唯一索引 UNIQUE
  3. 全文索引 FULLTEXT
  4. 单列索引
  5. 多列索引
  6. 空间索引

创建索引的时机

索引的创建有利有弊,创建索引可以提高查询速度,但是也会占据更多的磁盘空间

适合创建索引的情况

  • 经常被查询的字段
  • 在分组的字段
  • 存在依赖关系的子表和父表之间的联合查询,即主键和外键字段
  • 设置唯一完整性约束的字段

不适合创建索引的情况

  • 在查询中很少使用的字段
  • 拥有许多重复值的字段

创建普通索引

所谓普通索引就是在创建索引时不加任何限制条件

创建表时创建

  1. create table table_name(
  2. ....
  3. ....
  4. index 索引名( 属性名1 长度 ASC|DESC)
  5. );
  6. 1. 属性名1 代表你要在那个字段上创建
  7. 2. 长度 代表索引的长度
  8. 3. ASC是排序

实列

  1. create table table_name(
  2. deptno int,
  3. dname varchar(20),
  4. loc varchar(40),
  5. index index_dep(deptno)
  6. )

在已经存在的表上创建索引

  1. CREATE INDEX 索引名 ON 表名 (字段名 长度)

实例

  1. create index id_index on user (id);

还可以通过ALTER语句来创建

  1. ALTER TABLE 表名 ADD INDEX 索引名(字段名 长度)

创建唯一索引

当给一个字段设置主键或唯一性完整性约束的时候,数据库会自动帮它们创建唯一索引

创建表的时候创建

  1. CREATE TABLE tableName(
  2. ....
  3. ....
  4. UNIQUE INDEX 索引名(字段名 长度 ASC)
  5. # 比普通索引多了一个限制词 UNIQUE
  6. );

在已经存在的表上创建唯一索引

  1. CREATE UNIQUE INDEX 索引名 ON 表名 (字段名,长度,ASC)

同样可以使用ALTER来创建唯一索引

创建全文索引

创建全文索引和以上两种类型的索引类似,只需将限制词换为FULLTEXT即可,之后不再赘述

创建多列索引

多列索引就是索引关联的字段不是一个字段而是多个字段,虽然可以通过所关联的字段进行查询,但是必须包含第一个字段才能使用

  1. CREATE TABLE tablename(
  2. ...
  3. ...
  4. INDEX 索引名 (字段名1 长度 ,字段名2 长度)
  5. );

删除索引

  1. DROP INDEX 索引名 ON 表名