在MySQL数据库中,数据库对象表是存储和操做数据的逻辑结构。
数据库对象索引,则是一种有效组合数据的方式。经过索引对象,能够快速查到数据对象表中的记录,是提供性能的经常使用方式。
数据库对象索引的出现,不只能够提升数据库管理系统的查找速度,并且还能够保证字段的惟一性,从而实现数据库表的完整性。
根据索引类型,能够将索引分为B型树索引(BTREE)和哈希索引(HASH)。数据库
InnoDB和MyISAM存储引擎支持btree索引类型,memory存储引擎支持hash索引。默认为前者索引。性能
一个索引会包含表中按照必定顺序排序的一列或者多列字段。索引的基本操做包括:建立,修改,删除。code
索引有6种,分别是:普通索引,惟一索引,全文索引,单列索引,多列索引,空间索引。
索引的建立,有利有弊。建立索引能够提供查询速度,可是过多的索引会占据许多磁盘空间。
如下状况适合建立索引:对象
如下状况不适合建立索引:排序
普通索引,就是在建立索引时,不添加任何限制条件(惟一,非空等限制)。该类型的索引能够建立在任何数据类型的字段上。索引
惟一索引,就是建立索引时,限制索引的值必须是惟一的。经过该类型的索引,能够更快第查询某条记录。
根据建立索引的方式,能够分为自动索引和手动索引。
自动索引
指的是在数据库表里设置完整性约束时,该表被系统自动建立索引。
手动索引
指的是手动在表上建立索引。
当设置表中的某个字段设置主键或者惟一完整性约束时,系统就会自动建立关联该字段的惟一索引。ip
全文索引,主要关联在数据类型为char,varchar,text的字段,以便可以更加快速地查询数据量较大的字符串类型的字段。字符串
多列索引,指的是建立索引时,所关联的字段不是一个字段,而是多个字段。
虽然能够经过所关联的字段进行查询,可是只有查询条件中使用了所关联的字段中的第一个字段,多列索引才会被使用。hash
create table kvmhost ( hostid int(10), hostname char(10), hostmac char(20), hostip char(20), index hostid_index(hostid));
结果以下图:
it