MySQL数据库对象-索引

1. 概述

在MySQL数据库中,数据库对象表是存储和操做数据的逻辑结构。
数据库对象索引,则是一种有效组合数据的方式。经过索引对象,能够快速查到数据对象表中的记录,是提供性能的经常使用方式。
数据库对象索引的出现,不只能够提升数据库管理系统的查找速度,并且还能够保证字段的惟一性,从而实现数据库表的完整性。
根据索引类型,能够将索引分为B型树索引(BTREE)和哈希索引(HASH)。数据库

InnoDB和MyISAM存储引擎支持btree索引类型,memory存储引擎支持hash索引。默认为前者索引。性能

一个索引会包含表中按照必定顺序排序的一列或者多列字段。索引的基本操做包括:建立,修改,删除。code

2. 索引分类

索引有6种,分别是:普通索引,惟一索引,全文索引,单列索引,多列索引,空间索引。
索引的建立,有利有弊。建立索引能够提供查询速度,可是过多的索引会占据许多磁盘空间。
如下状况适合建立索引:对象

  • 常常被查询的字段,即在where子句种出现的字段
  • 在分组的字段,即在group by 子句种出现的字段
  • 存在依赖关系的子表和父表之间的联合查询,即主键或者外键字段
  • 设置惟一完整性的约束字段

如下状况不适合建立索引:排序

  • 在查询中不多被使用的字段
  • 用户许多重复的字段

2.1 不一样索引的概念

2.1.1 普通索引

普通索引,就是在建立索引时,不添加任何限制条件(惟一,非空等限制)。该类型的索引能够建立在任何数据类型的字段上。索引

2.1.2 惟一索引

惟一索引,就是建立索引时,限制索引的值必须是惟一的。经过该类型的索引,能够更快第查询某条记录。
根据建立索引的方式,能够分为自动索引和手动索引。
自动索引
指的是在数据库表里设置完整性约束时,该表被系统自动建立索引。
手动索引
指的是手动在表上建立索引。
当设置表中的某个字段设置主键或者惟一完整性约束时,系统就会自动建立关联该字段的惟一索引。ip

2.1.3 全文索引

全文索引,主要关联在数据类型为char,varchar,text的字段,以便可以更加快速地查询数据量较大的字符串类型的字段。字符串

2.1.4 多列索引

多列索引,指的是建立索引时,所关联的字段不是一个字段,而是多个字段。
虽然能够经过所关联的字段进行查询,可是只有查询条件中使用了所关联的字段中的第一个字段,多列索引才会被使用。hash

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));
结果以下图:



it

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建立多列索引

相关文章
相关标签/搜索