SQLServer和Oracle数据库索引介绍

SQLServer和Oracle数据库索引介绍

ID:36470688

大小:719.50 KB

页数:20页

时间:2019-05-11

SQLServer和Oracle数据库索引介绍_第1页
SQLServer和Oracle数据库索引介绍_第2页
SQLServer和Oracle数据库索引介绍_第3页
SQLServer和Oracle数据库索引介绍_第4页
SQLServer和Oracle数据库索引介绍_第5页
资源描述:

《SQLServer和Oracle数据库索引介绍》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SQLServer和Oracle数据库索引介绍1SQLServer中的索引  索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B树)中,使SQLServer可以快速有效地查找与键值关联的行。  表或视图可以包含以下类型的索引:  聚集索引  聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。索引定义中包含聚集索引列。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序。  只有当表包含聚集索引时,表中的数据行才按排序顺序存储。如果表具有聚集索引,则该表

2、称为聚集表。如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中。  每个表几乎都对列定义聚集索引来实现下列功能:  1、可用于经常使用的查询。  2、提供高度唯一性。  在创建聚集索引之前,应先了解数据是如何被访问的。考虑对具有以下特点的查询使用聚集索引:  使用运算符(如BETWEEN、>、>=、<和<=)返回一系列值。  使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行物理相邻。例如,如果某个查询在一系列采购订单号间检索记录,PurchaseOrderNumber列的聚集索引可快速定位包含起始采购订单号的行,然后检索表中

3、所有连续的行,直到检索到最后的采购订单号。  返回大型结果集。  使用JOIN子句;一般情况下,使用该子句的是外键列。  使用ORDERBY或GROUPBY子句。  在ORDERBY或GROUPBY子句中指定的列的索引,可以使数据库引擎不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。  聚集索引不适用于具有下列属性的列:  频繁更改的列  这将导致整行移动,因为数据库引擎必须按物理顺序保留行中的数据值。这一点要特别注意,因为在大容量事务处理系统中数据通常是可变的。  宽键宽键是若干列或若干大型列的组合。所有非聚集索引将聚集索引中的键值

4、用作查找键。为同一表定义的任何非聚集索引都将增大许多,这是因为非聚集索引项包含聚集键,同时也包含为此非聚集索引定义的键列。 非聚集索引  非聚集索引具有独立于数据行的结构。非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。  从非聚集索引中的索引行指向数据行的指针称为行定位器。行定位器的结构取决于数据页是存储在堆中还是聚集表中。对于堆,行定位器是指向行的指针。对于聚集表,行定位器是聚集索引键。  在SQLServer2005中,可以向非聚集索引的叶级别添加非键列以跳过现有的索引键限制(900字节和16键列),并执行完整范

5、围内的索引查询。  非聚集索引与聚集索引具有相同的B树结构,它们之间的显著差别在于以下两点:  1、基础表的数据行不按非聚集键的顺序排序和存储。  2、非聚集索引的叶层是由索引页而不是由数据页组成。  设计非聚集索引时需要注意数据库的特征:  更新要求较低但包含大量数据的数据库或表可以从许多非聚集索引中获益从而改善查询性能。  决策支持系统应用程序和主要包含只读数据的数据库可以从许多非聚集索引中获益。查询优化器具有更多可供选择的索引用来确定最快的访问方法,并且数据库的低更新特征意味着索引维护不会降低性能。  联机事务处理应用程序和包含大量更新表的数

6、据库应避免使用过多的索引。此外,索引应该是窄的,即列越少越好。  一个表如果建有大量索引会影响INSERT、UPDATE和DELETE语句的性能,因为所有索引都必须随表中数据的更改进行相应的调整。  唯一索引  唯一索引确保索引键不包含重复的值,因此,表或视图中的每一行在某种程度上是唯一的。  聚集索引和非聚集索引都可以是唯一索引。  包含性列索引  一种非聚集索引,它扩展后不仅包含键列,还包含非键列。  索引涵盖  指查询中的SELECT与WHERE子句的所用列同时也属于非聚集索引的情况。这样就可以更快检索数据,因为所有信息都可以直接来自于索引页

7、,从而SQLServer可以避免访问数据页。加上独立的索引文件组,可以用最快速度访问数据。  请看如下表示例:  A.创建简单非聚集索引 以下示例为Purchasing.ProductVendor表的VendorID列创建非聚集索引。       USE AdventureWorks;  GO  CREATE INDEX IX_ProductVendor_VendorID  ON Purchasing.ProductVendor (VendorID);  GO  B.创建简单非聚集组合索引  以下示例为Sales.SalesPerson表的Sale

8、sQuota和SalesYTD列创建非聚集组合索引。       CREATE NONCLUSTERED INDEX IX

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。