利用索引提高SQL Server数据处理效率

在良好的数据库设计基础上,能有效地使用索引是SQL Server取得高性能的基础,SQL Server采用基于代价的优化模型,它对每一个提交的有关表的查询,决定是否使用索引或用哪一个索引。因为查询执行的大部分开销是磁盘I/O,使用索引提高性能的一个主要目标是避免全表扫描,因为全表扫描需要从磁盘上读表的每一个数据页,如果有索引指向数据值,则查询只需读几次磁盘就可以了。所以如果建立了合理的索引,优化器就能利用索引加速数据的查询过程。但是,索引并不总是提高系统的性能,在增、删、改操作中索引的存在会增加一定的工作量,因此,在适当的地方增加适当的索引并从不合理的地方删除次优的索引,将有助于优化那些性能较差的SQL Server应用。实践表明,合理的索引设计是建立在对各种查询的分析和预测上的,只有正确地使索引与程序结合起来,才能产生最佳的优化方案。本文就SQL Server索引的性能问题进行了一些分析和实践。

一、聚簇索引(clustered indexes)的使用

聚簇索引是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。由于聚簇索引的索引页面指针指向数据页面,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。建立聚簇索引的思想是:

1、大多数表都应该有聚簇索引或使用分区来降低对表尾页的竞争,在一个高事务的环境中,对最后一页的封锁严重影响系统的吞吐量。

2、在聚簇索引下,数据在物理上按顺序排在数据页上,重复值也排在一起,因而在那些包含范围检查(between、<、<=、>、>=)或使用group by或order by的查询时,一旦找到具有范围中第一个键值的行,具有后续索引值的行保证物理上毗连在一起而不必进一步搜索,避免了大范围扫描,可以大大提高查询速度。

时间: 2024-04-17 22:27:01

利用索引提高SQL Server数据处理效率的相关文章

利用索引提高SQL Server数据处理的效率

在良好的数据库设计基础上,能有效地使用索引是SQL Server取得高性能的基础,SQL Server采用基于代价的优化模型,它对每一个提交的有关表的查询,决定是否使用索引或用哪一个索引.因为查询执行的大部分开销是磁盘I/O,使用索引提高性能的一个主要目标是避免全表扫描,因为全表扫描需要从磁盘上读表的每一个数据页,如果有索引指向数据值,则查询只需读几次磁盘就可以了.所以如果建立了合理的索引,优化器就能利用索引加速数据的查询过程.但是,索引并不总是提高系统的性能,在增.删.改操作中索引的存在会增加

合理利用索引提高SQL Server数据库运行效率

索引的作用就类似于书的目录,书的目录会按照章节的顺序排列,会指想某一张的位置.这样如果在一本数百页的书 里面 查找某个章节位置的时候,我们就可以只扫描书的目录,扫描的范围缩小了n倍,查询的效率自然就提高了.另外在sql server内存够用的情况下索引会被放到内存中,在内存中查找自然又会http://www.aliyun.com/zixun/aggregation/7208.html">提高效率; 所以我们必须得合理利用索引. 1)对什么列建索引 数据库默认情况下会对主键建聚集索引,除了这

DBCC DBREINDEX重建索引提高SQL Server性能

1. 索引的体系结构 为什么要不断的维护表的索引?首先,简单介绍一下索引的体系结构.SQL Server在硬盘中用8KB页面在数据库文件内存放数据.缺省情况下这些页面及其包含的数据是无组织的.为了使混乱变为有序,就要生成索引.生成索引后,就有了索引页和数据页,数据页保存用户写入的数据信息.索引页存放用于检索列的数据值清单(关键字)和索引表中该值所在纪录的地址指针.索引分为簇索引和非簇索引,簇索引实质上是将表中的数据排序,就好像是字典的索引目录.非簇索引不对数据排序,它只保存了数据的指针地址.向一

如何提高SQL SERVER的性能

server|性能  如何提高SQL SERVER的性能   第一篇:通过维护表的索引来提高数据的访问速度   大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server要进行表格扫描读取表中的每一个记录才能找到索要的数据.索引可以分为簇索引和非簇索引,簇索引通过重排表中的数据来提高数据的访问速度,而非簇索引则通过维护表中的数据指针来提高数据的索引.      索引的体系结构:   为什么要不断的维护表的索引?首先,简单介绍一下索引的体系结构.SQL Serve

sql server 查询效率-SQL Server查询效率问题,哪个高手可以帮忙解释下?

问题描述 SQL Server查询效率问题,哪个高手可以帮忙解释下? 下面5个SQL查询效率差异很多,BusinessIndex表中有300万条记录, 其中DatAuthor建立有索引,其它字段没有索引. 哪个高手可以分析下什么原因? 非常感谢! SELECT strCode, strIndex from BusinessIndex where 1=1 and UserOrgID=1 and ( BusinessIndex.strIndex like '%热水器%') --查询4s SELECT

从外到内提高SQL Server数据库性能

如何提高SQL Server数据库的性能,该从哪里入手呢?笔者认为,该遵循从外到内的顺序,来改善数据库的运行性能.如下图: 第一层:网络环境. 到企业碰到数据库反映速度比较慢时,首先想到的是是否是网络环境所造成的.而不是一开始就想着如何去提高数据库的性能.这是很多数据库管理员的一个误区.因为当网络环境比较恶劣时,你就算再怎么去改善数据库性能,也是枉然. 如以前有个客户,向笔者反映数据库响应时间比较长,让笔者给他们一个提高数据库性能的解决方案.那时,笔者感到很奇怪.因为据笔者所知,这家客户数据库的

利用DataSet存取SQL Server中的二进制文件

server|二进制 利用DataSet存取SQL Server中的二进制文件 作者 朱二 利用DataSet可以方便的对SQL Server中的二进制文件进行存取与更新操作,下面是详细的代码演示 演示环境: 数据库机器名 :s_test登陆名 :sa密码 :7890数据库名 db_test 下面建立一个表: create table tb_test(id int identity(1,1),photo image ,constraint pk_tb_test primary key(id))

教你如何提高SQL Server 2000的性能?

以往的服务器,由于内存价格过高,一般配的内存不是很多,超过4G的当然就不多了现在的服务器,配置超过4G就很多,在配作SQL 数据库服务器后,很多的人只选默认的设置,虽然可以正常使用,可是却把大量的内存浪费了(SQL服务使用的内存不会超过1.8G),系统的性能也不能因为的大内存而提升,这是很可惜的. 下面介绍一种方法教你如何提高SQL Server 2000 的性能. 配置的过程如下.(如果服务器的内存少于4G,不用配置) 1.打开系统中的大内存支持(windows) 要启用 Windows 20

删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005 .

原文:删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005 . 删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005, 使用说明 : 1,先执行脚本,将存储过程创建在数据库中 2,调用方法,以黄金搭档数据库为例 use velcromfm --数据库名, 根据具体项目替换 go declare @tableName varchar(20) set @tableName='menu' --表名 ,根据实际情况替换e