sql server和oracle中的索引--

sql server和oracle中的索引--

ID:22372257

大小:59.50 KB

页数:7页

时间:2018-10-28

sql server和oracle中的索引--_第1页
sql server和oracle中的索引--_第2页
sql server和oracle中的索引--_第3页
sql server和oracle中的索引--_第4页
sql server和oracle中的索引--_第5页
资源描述:

《sql server和oracle中的索引--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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

2、序顺序存储。如果表具有聚集索引,则该表称为聚集表。如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中。  每个表几乎都对列定义聚集索引来实现下列功能:  1、可用于经常使用的查询。  2、提供高度唯一性。  在创建聚集索引之前,应先了解数据是如何被访问的。考虑对具有以下特点的查询使用聚集索引:  使用运算符(如BETeasure_Name   ONProduction.UnitMeasure(Name);GO  无论何时对基础数据执行插入、更新或删除操作,SQLServer2005数据库引擎都会自动维护索

3、引。随着时间的推移,这些修改可能会导致索引中的信息分散在数据库中(含有碎片)。当索引包含的页中的逻辑排序(基于键值)与数据文件中的物理排序不匹配时,就存在碎片。碎片非常多的索引可能会降低查询性能,导123下一页>>>>这篇文章来自..,。致应用程序响应缓慢。这个时候,我们需要做得就是重新组织和重新生成索引。重新生成索引将删除该索引并创建一个新索引。此过程中将删除碎片,通过使用指定的或现有的填充因子设置压缩页来回收磁盘空间,并在连续页中对索引行重新排序(根据需要分配新页)。这样可以减少获取所请求数据所需的页读取数,

4、从而提高磁盘性能。  可以使用下列方法重新生成聚集索引和非聚集索引:  带REBUILD子句的alterINDEX。此语句将替换DBCCDBREINDEX语句。  带drop_EXISTING子句的createINDEX。  示例如下:  A.重新生成索引  以下示例将重新生成单个索引。USEAdventurePDB=ON,       STATISTICS_NOREPUTE=ON);GO  2 Oracle中的索引  索引是Oracle使用的加速表中数据检索的数据库对象。  下面的情况,可以考虑使用索引:  1

5、)大表  2)主键(自动索引)  3)单键列(自动索引)  4)外键列(自动索引)  5)大表上nFROMTABLEn=:X的索引,要达到叶子块来获取第一行,不论使用的:X值是什么,都会执行同样数目的I/O,由此可见B*树的B代表的是balanced,所谓的Heightbalanced。大多数B*树索引的高度都是2或3,即使索引中有数百万行记录也是如此,这说明,一般而言,在索引中找到一个键只需要2到3次I/O,这确实不错。  B*树是一个极佳的通用索引机制,无论是大表还是小表都很适用,随着底层表大小增长,获取数据

6、的性能仅会稍有恶化。  比如,我们为customers表建立一个常见的B*树索引:createINDEXIDX_Cus_Cityoncustomers(city)  B*树索引有以下子类型:  复合索引  复合索引也是一种B*树索引,它由多列组成。当我们拥有使用两列或超过两列的频繁查询时,就使用B*树复合索引,而其所使用的两列或多列在on-yyyy。如果为每一列创建一个索引,那么为了搜索列的值,两个索引都要被读取,但是如果为两列都创建一个复合索引,那么只有一个索引被读取,这样无疑比两个索引要求更少的I/O。  2

7、)使用前面例子中同样的条件,如果创建一个复合索引,将更快地检索行,因为你正在排除了所有order_status_id不是1的行,从而减少了搜索order_date的行数。  反向键索引  B*树索引的另一个特点是能够将索引键反转。首先,你可以问问自己为什么想这么做?B*树索引是为特定的环境、特定的问题而设计的。实现B*树索引的目的是为了减少右侧索引中对索引叶子块的竞争,比如在一个OracleRAC环境中,某些列用一个序列值或时间戳填充,这些列上建立的索引就属于右侧(right-hand-side)索引。上一页12

8、3下一页>>>>这篇文章来自..,。  RAC是一种Oracle配置,其中多个实例可以装载和打开同一个数据库。如果两个实例需要同时修改同一个数据块,它们会通过一个硬件互连(interconnect)来回传递这个块来实现共享,互连是两个(或多个)机器之间的一条专用网络连接。如果某个利用一个序列填充,这个列上有一个主键索引,那么每个人插入新值时,都会视图修改目前索引结构右侧的

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

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

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