2. 索引分类
2.1 不同索引的概念
2.1.1 普通索引
2.1.2 唯一索引
2.1.3 全文索引
2.1.4 多列索引
3. 索引操作
3.1 普通索引
3.1.1 创建表时创建普通索引
3.1.2 在已经存在的表上创建普通索引
3.1.3 通过SQL语句alter table创建普通索引
3.2 唯一索引
3.2.1 创建表时创建唯一索引
3.2.2 在已经存在的表上创建唯一索引
3.2.3 通过SQL语句alter table创建唯一索引
3.3 全文索引
3.3.1 创建表时创建全文索引
3.3.2 在已经存在的表上创建全文索引
3.4.3 通过SQL语句alter table创建全文索引
3.4 多列索引
3.4.1 创建表时创建多列索引
3.4.2 在已经存在的表上创建多列索引
3.4.3 通过SQL语句alter table创建多列索引
1. 概述
在MySQL数据库中,数据库对象表是存储和操作数据的逻辑结构。
数据库对象索引,则是一种有效组合数据的方式。通过索引对象,可以快速查到数据对象表中的记录,是提供性能的常用方式。
数据库对象索引的出现,不仅可以提高数据库管理系统的查找速度,而且还可以保证字段的唯一性,从而实现数据库表的完整性。
根据索引类型,可以将索引分为B型树索引(BTREE)和哈希索引(HASH)。
InnoDB和MyISAM存储引擎支持btree索引类型,memory存储引擎支持hash索引。默认为前者索引。
一个索引会包含表中按照一定顺序排序的一列或者多列字段。索引的基本操作包括:创建,修改,删除。
2. 索引分类
索引有6种,分别是:普通索引,唯一索引,全文索引,单列索引,多列索引,空间索引。
索引的创建,有利有弊。创建索引可以提供查询速度,但是过多的索引会占据许多磁盘空间。
以下情况适合创建索引:
- 经常被查询的字段,即在where子句种出现的字段
- 在分组的字段,即在group by 子句种出现的字段
- 存在依赖关系的子表和父表之间的联合查询,即主键或者外键字段
- 设置唯一完整性的约束字段
以下情况不适合创建索引:
- 在查询中很少被使用的字段
- 用户许多重复的字段
2.1 不同索引的概念
2.1.1 普通索引
普通索引,就是在创建索引时,不添加任何限制条件(唯一,非空等限制)。该类型的索引可以创建在任何数据类型的字段上。
2.1.2 唯一索引
唯一索引,就是创建索引时,限制索引的值必须是唯一的。通过该类型的索引,可以更快第查询某条记录。
根据创建索引的方式,可以分为自动索引和手动索引。
自动索引
指的是在数据库表里设置完整性约束时,该表被系统自动创建索引。
手动索引
指的是手动在表上创建索引。
当设置表中的某个字段设置主键或者唯一完整性约束时,系统就会自动创建关联该字段的唯一索引。
2.1.3 全文索引
全文索引,主要关联在数据类型为char,varchar,text的字段,以便能够更加快速地查询数据量较大的字符串类型的字段。
2.1.4 多列索引
多列索引,指的是创建索引时,所关联的字段不是一个字段,而是多个字段。
虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联的字段中的第一个字段,多列索引才会被使用。
3. 索引操作
3.1 普通索引
3.1.1 创建表时创建普通索引
create table kvmhost ( hostid int(10), hostname char(10), hostmac char(20), hostip char(20), index hostid_index(hostid));
结果如下图: