什么是索引 索引的优缺点

2017-04-14

索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。那么你对索引了解多少呢?以下是由小编整理关于什么是索引的内容,希望大家喜欢!

索引的定义概念

索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。索引是针对表而建立的,它是由数据页面以外的索引页面组成的,每个索引页面中的行都会含有逻辑指针,以便加速检索物理数据。

在数据库关系图中,可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。

索引的作用

在数据库系统中建立索引主要有以下作用:

(1)快速取数据;

(2)保证数据记录的唯一性;

(3)实现表与表之间的参照完整性;

(4)在使用ORDER by、group by子句进行数据检索时,利用索引可以减少排序和分组的时间。

索引的优缺点

优点

1、大大加快数据的检索速度;

2、创建唯一性索引,保证数据库表中每一行数据的唯一性;

3、加速表和表之间的连接;

4、在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

缺点

1、索引需要占物理空间。

2、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。

索引的类型

根据数据库的功能,可以在数据库设计器中创建四种索引:普通索引、唯一索引、主键索引和聚集索引。

普通索引

最基本的索引类型,没有唯一性之类的限制。普通索引可以通过以下几种方式创建:

创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);

修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);

创建表的时候指定索引,例如CREATE TABLE tablename ( [、、、], INDEX [索引的名字] (列的列表) );

唯一索引

唯一索引是不允许其中任何两行具有相同索引值的索引。

当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在 employee 表中职员的姓 (lname) 上创建了唯一索引,则任何两个员工都不能同姓。

对某个列建立UNIQUE索引后,插入新纪录时,数据库管理系统会自动检查新纪录在该列上是否取了重复值,在CREATE TABLE 命令中的UNIQE约束将隐式创建UNIQUE索引。

创建唯一索引的几种方式:

创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);

修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表); ;

创建表的时候指定索引,例如CREATE TABLE tablename ( [、、、], UNIQUE [索引的名字] (列的列表) );

主键索引

简称为主索引,数据库表中一列或列组合(字段)的值唯一标识表中的每一行。该列称为表的主键。

在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问。有

提示尽管唯一索引有助于定位信息,但为获得最佳性能结果,建议改用主键索引。

候选索引

与主索引一样要求字段值的唯一性,并决定了处理记录的顺序。在数据库和自由表中,可以为每个表建立多个候选索引。

聚集索引

也称为聚簇索引,在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引, 即如果存在聚集索引,就不能再指定CLUSTERED 关键字。

索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。聚集索引更适用于对很少对基表进行增删改操作的情况。

如果在表中创建了主键约束,SQL Server将自动为其产生唯一性约束。在创建主键约束时,指定了CLUSTERED关键字或干脆没有制定该关键字,SQL Sever将会自动为表生成唯一聚集索引。

非聚集索引

也叫非簇索引,在非聚集索引中,数据库表中记录的物理顺序与索引顺序可以不相同。一个表中只能有一个聚集索引,但表中的每一列都可以有自己的非聚集索引。如果在表中创建了主键约束,SQL Server将自动为其产生唯一性约束。在创建主键约束时,如果制定NONCLUSTERED关键字,则将为表产生唯一聚集索引。

更多相关阅读

最新发布的文章