首页 理论教育 PHP与SQLserver数据库开发:索引类型及其优势

PHP与SQLserver数据库开发:索引类型及其优势

时间:2023-11-02 理论教育 版权反馈
【摘要】:在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。非聚集索引的叶层包含指向数据页上的表行指针。一个表可以有多达249个非聚集索引。

PHP与SQLserver数据库开发:索引类型及其优势

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

1.普通索引

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

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

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

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

2.唯一索引

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

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

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

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

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

3.主键索引

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

4.聚集索引(也叫聚簇索引)

在聚集索引中,表中行物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。

聚集索引决定了表中数据的物理顺序,它是按照字典顺序排列的。SQL Server按行的形式排列表行,使得它们的物理顺序与逻辑顺序相同。聚集索引的叶层包含表的实际数据页。由于聚集索引指定了表中数据的物理顺序,所以,每张表只能有一个聚集索引,通常基于主key来创建。聚集索引方式就是通过对磁盘上的各种实际数据进行一定的组合和整理,从而使其可以按照制定的列值进行排列的过程。根据研究发现,按照物理表现方式的不同将磁盘上的这些数据进行新一轮的排列组合之后,系统在进行查询作业的时候,如果搜索到符合搜索条件的第一条记录之后,就不需要再对该列的其他数据进行充分的查询,从而使查询范围大大的缩小,提升了索引方式下SQL数据库的查询的效率。聚集索引使用的场合:包含大量完全不同的数据列、经常顺序访问列、返回大量查询结果、经常包含连接或GROUP BY子句查询所访问的列。聚集索引是表中存储的数据按照索引的顺序存储,检索效率比普通索引要高,但对数据新增、修改、删除的影响比较大。

5.非聚集索引

对于非聚集索引,表行的物理顺序与它们的索引顺序是不相同的。非聚集索引的叶层包含指向数据页上的表行指针。每个叶子页面包含有一个索引值和一个指向具有该值的表行。一个表可以有多达249个非聚集索引。因此,SQL Server可以通过搜索非聚集索引而找到数据的位置来查找数据值,然后直接从那个位置取出数据。根据此特性,我们可以知道,非聚集索引非常利于精确匹配查询的查找工作。在实际工程应用中,我们可能基于以下几个目的选择非聚集索引:包含大量完全不同数据的列、不会返回大量结果、经常需要精确匹配。

如果在一个有着多个非聚集索引的表上创建聚集索引或删除聚集索引,则所有的非聚集索引必须重建,这样对于一张大表来说会浪费大量的操作时间。所以实际应用中,一般先创建聚集索引,然后创建非聚集索引;当删除所有的索引时,先删除非聚集索引,最后再删除聚集索引。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈