Oracle数据库索引和SQL Server的详述

发表于:2010-7-29 10:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  Oracle数据库索引是和表或是视图相关联的磁盘上的结构,我们可以对其加快从表或是视图里检索行的速度。Oracle数据库索引主要包含由表或是相关视图中的一列或是多列生成的键。这些键存储在一个结构(B 树)。

  1 SQL Server中的索引

  使 SQL Server 可以快速有效地查找与键值关联的行。

  表或视图可以包含以下类型的索引:

  聚集索引

  聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。Oracle数据库索引定义中包含聚集索引列。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序。

  只有当表包含聚集索引时,表中的数据行才按排序顺序存储。如果表具有聚集索引,则该表称为聚集表。如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中。

  每个表几乎都对列定义聚集索引来实现下列功能:

  1、可用于经常使用的查询。
  2、提供高度唯一性。

  在创建聚集Oracle数据库索引之前,应先了解数据是如何被访问的。考虑对具有以下特点的查询使用聚集索引:

  使用运算符(如 BETWEEN、>、>=、< 和 <=)返回一系列值。

  使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行物理相邻。例如,如果某个查询在一系列采购订单号间检索记 录,PurchaseOrderNumber 列的聚集索引可快速定位包含起始采购订单号的行,然后检索表中所有连续的行,直到检索到最后的采购订单号。

  返回大型结果集

  使用 JOIN 子句;一般情况下,使用该子句的是外键列。

  使用 ORDER BY 或 GROUP BY 子句。

  在 ORDER BY 或 GROUP BY 子句中指定的列的Oracle数据库索引,可以使数据库引擎 不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。

  聚集索引不适用于具有下列属性的列:

  频繁更改的列

  这将导致整行移动,因为数据库引擎 必须按物理顺序保留行中的数据值。这一点要特别注意,因为在大容量事务处理系统中数据通常是可变的。

  宽键

  宽键是若干列或若干大型列的组合。所有非聚集索引将聚集索引中的键值用作查找键。为同一表定义的任何非聚集索引都将增大许多,这是因为非聚集索引项包含聚集键,同时也包含为此非聚集索引定义的键列。 非聚集索引

  非聚集索引具有独立于数据行的结构。非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。

  从非聚集索引中的索引行指向数据行的指针称为行定位器。行定位器的结构取决于数据页是存储在堆中还是聚集表中。对于堆,行定位器是指向行的指针。对于聚集表,行定位器是聚集索引键。

  在 SQL Server 2005 中,可以向非聚集Oracle数据库索引的叶级别添加非键列以跳过现有的索引键限制(900 字节和 16 键列),并执行完整范围内的索引查询。

  非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显着差别在于以下两点:

  1、基础表的数据行不按非聚集键的顺序排序和存储。
  2、非聚集索引的叶层是由索引页而不是由数据页组成。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号