SQL Server和Oracle中的索引

1 SQL Server中的索引

索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(B树)中,使SQL Server可以快速有效地查找与键值关联的行。

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

聚集索引

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

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

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

1、可用于经常使用的查询。

2、提供高度唯一性。

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

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

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

返回大型结果集。

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

使用ORDER BY或GROUP BY子句。

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

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

频繁更改的列

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

宽键

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

时间: 2024-09-20 08:38:00

SQL Server和Oracle中的索引的相关文章

SQL Server和Oracle中的锁和死锁

1.锁的作用 ORACLE : 锁是一种机制,当某个数据库对象正被其他进程或用户修改时,这种机制可以保护它不被修改. 为了防止对象被两个不同的用户同时修改,数据库系统创建了锁这种复杂的数据结构,来实现锁定机制,这种机制使用在oracle中称为排队的队列结构,以串行的方式执行锁. 锁的作用如下: 1) 他们坚持一致性和完整性,在事务处理期间,数据和对象保证它们的一致性和完整性. 2) 但对象不是立即可用时,它们提供一种队列结构,这种结构允许所有会话都加入到等候对象的队列中, 3) 自动处理锁机制

在SQL Server和Oracle中创建job_数据库其它

首先说下ms server,因为我也是新手,所以首先选择了使用企业管理器进行任务设定,然后再导出设计完毕的任务脚本,这样就可以在其他数据库中直接通过执行脚本的形式来新建任务了(需要适当修改其中的一些任务名称和数据库名称等值),下面说下具体的操作步骤以及获得的任务脚本: 1. 保证启动ms server的"SQL Server代理服务"(即agent service) 2. 打开企业管理器 -> 连接数据服务器 -> 右键"SQL Server agent"

SQL Server 2000数据库中如何重建索引

在数据库中创建索引时,查询所使用的索引信息存储在索引页中.连续索引页由从一个页到下一个页的指针链接在一起.当对数据的更改影响到索引时,索引中的信息可能会在数据库中分散开来.重建索引可以重新组织索引数据(对于聚集索引还包括表数据)的存储,清除碎片.这可通过减少获得请求数据所需的页读取数来提高磁盘性能. 在 Microsoft SQL Server 2000 中,如果要用一个步骤重新创建索引,而不想删除旧索引并重新创建同一索引,则使用 CREATE INDEX 语句的 DROP_EXISTING 子

SQL Server与Oracle、DB2的优劣对比

SQL Server与Oracle.DB2的优劣对比: 1.开放性: SQL Server 只能在Windows上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的.Windows9X系列产品是偏重于桌面应用,NT Server只适合中小型企业.而且Windows平台的可靠性,安全性和伸缩性是非常有限的.它不象unix那样久经考验,尤其是在处理大数据量的关键业务时. Oracle 能在所有主流平台上运行(包括 windows).完全支持所有的工业标准.采用完全开放策略.可以使客户选

从SQL SERVER 向ORACLE 8迁移的技术实现方案

oracle|server  不知道从哪里得到这个文档,有用就放上来了 -gwb  数据库端SQL语法的迁移以下为常用的SQL语法迁移,包括数据类型.ID列向SEQUENCE迁移.表(主键.外键.CHECK.UNIQUE.DEFAULT.INDEX).游标.存储过程.函数.触发器.常用SQL语法与函数几个方面,考虑SQL SERVER的实际情况,没有涉及ORACLE特有的PACKAGE.EXCEPTION等.在以下的描述中,将SQL SERVER的TRANSACT-SQL简称为T-SQL.在OR

SQL Server访问Oracle查询性能问题解决

1. 问题 系统有个模块,需要查询Oracle数据库中的数据.目前是通过建立链接服务器实现的. SQLServer访问Oracle实现 可参考这篇文章http://www.cnblogs.com/gnielee/archive/2010/09/07/access-oracle-from-sqlserver.html 目前的查询语句就是一个简单的带where条件的查询语句,类似如下: SELECT*FROM LINKED_NAME..ACCOUNT_NAME.TABLE_NAME WHERE CO

比较SQL Server与Oracle DB2的不同

开发数据库应用,选择一个好的数据库是非常重要的.本文从一些方面比较了SQL Server与Oracle.DB2三种数据库,为你选择数据库提供一些参考. 开放性 SQL Server 只能在Windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的.Windows9X系列产品是偏重于桌面应用,NT server只适合中小型企业.而且Windows平台的可靠性,安全性和伸缩性是非常有限的.它不象Unix那样久经考验,尤其是在处理大数据量的关键业务时. Oracle 能在所有主

比较 SQL Server 与 Oracle 、 DB2

比较 SQL Server 与 Oracle . DB2 来源:Oracle数据库在线(www.dbonline.cn)一个好的数据库是非常重要的.本文从一些方面比较了 SQL Server 与 Oracle . DB2 三种数据库,为你选择数据库提供一些参考. 开放性 SQL Server 只能在 Windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的. Windows9X 系列产品是偏重于桌面应用, NT server 只适合中小型企业.而且 Windows 平台

SQL Server与Oracle并行访问的本质区别

设计优良.性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务.而"底气不足"的数据库系统随着更多的用户同时访问系统将大大降低其性能.最糟糕的情况下甚至可能导致系统的崩溃. 当然,并行访问是任何数据库解决方案都最为重视的问题了,为了解决并行访问方面的问题各类数据库系统提出了各种各样的方案.SQL Server和Oracle两大DBMS也分别采用了不同的并行处理方法.它们之间的实质差别在哪里呢? 并行访问的问题 并行访问出现问题存在若干种情况.在最简单的情形下,数量超过一个的用户可能同