索引

索引

 1.什么是索引

索引是一种有效组合数据的方式,可以快速查找到指定的记录,类似与书籍中目录。

 2.索引的作用

1)  大大提高数据库的检索速度。

2)  改善数据库的性能。

 3.索引分类

索引的存储类型可以分为B-树索引(BTREE)和哈希表(HASH)。InnoDB和MyISAM存储引擎支持B-树索引。

1)  普通索引;最基本索引类型,允许在定义索引的列中插入重复值和空值。它的唯一任务时加快对数据库的访问速度。因此,应该只为最常出现的查询条件(WHERE)或排序条件(ORDER BY)中数据列创建索引。    

2)  唯一索引;唯一索引不允许两行具有相同的索引值,允许有一个空值。

若是创建了唯一约束,则将自动创建唯一索引。尽管唯一索引有助于找到信息,但是为了获得最佳的性能,仍建议使用主键约束。

3)  主键索引;主键索引要求主键中的每个值都是非空的,唯一的,它允许快速访问数据。

在数据关系图中为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。

4)  复合索引;将多个列合并作为索引,这种索引称为复合索引。

需要注意的是:只有在查询中使用了复合索引最左边的字段时,索引才会被使用,即第一个字段作为前缀的集合。

5)  全文索引;全文索引的作用是支持值的查找,允许出现空值和重复值。全文索引可以在CHAR,VARCHAR或者TEXT类型的列上创建,全文索引的效率大大高于”LIKE”关键字。MySQL5.5中只有MyISAM存储引擎支持全文索引。

6)  空间索引;空间索引是对空间数据类型的列建立的索引,如GEOMETRY,POINT等,创建空间索引列必须将其声明为NOT NULL, MySQL5.5中只有MyISAM存储引擎支持空间索引。

 4.创建索引

语法:

CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX  index_name

ON  table_name (column_name[length]…………..);

其中:UNIQUE 表示唯一索引,FULLTEXT 表示全文索引, SPATIAL表示空间索引,为可选参数。

Index_name表示索引名;

Table_name表示创建索引的表名;

Column_name指定需要创建索引的列;

Length指定索引的长度,可选参数,只有字符串类型才能指定索引的长度。

 5.删除索引

语法:

DROP  INDEX  index_name  ON  table_name;

查看索引

语法:

SHOW  INDEX  FROM  table_name;

使用索引的原则

因为索引自身也需要维护,并占用一定的资源,因此没有必要为每个列都添加索引,如下条件可添加索引;

1)  频繁搜索的列

2)  经常用作查询的列

3)  经常排序,分组的列

4)  经常用作连接的列(主键、外键)

请不要给下面的列创建索引:

  1. 仅包含几个不同值的列

  2. 包中仅包含几行

posted @ 2017-10-08 19:06  富兰克杨  阅读(132)  评论(0)    收藏  举报