网管联盟 | 网管论坛 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 俱乐部 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > windows > 服务器技术 > SQL服务器 > 关于SQL Server中索引使用及维护简介  

关于SQL Server中索引使用及维护简介 评论 论坛

2007-06-07   作者:bitsCN整理   来源:中国网管联盟   PV:

关键词:

 在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡量应用系统成败的标准。而采用索引来加快数据处理速度也成为广大数据库用户所接受的优化方法。

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

www@bitscn@com

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

[bitsCN.Com]

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

bitsCN.nET*中国网管博客

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

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

DL@bitsCN_com网管软件下载

3、在一个频繁发生插入操作的表上建立聚簇索引时,不要建在具有单调上升值的列(如IDENTITY)上,否则会经常引起封锁冲突。 BBS.bitsCN.com网管论坛

4、在聚簇索引中不要包含经常修改的列,因为码值修改后,数据行必须移动到新的位置。 bbs.bitsCN.com

5、选择聚簇索引应基于where子句和连接操作的类型。 中国_网管联盟bitsCN.com

聚簇索引的侯选列是:

www@bitscn@com

1、主键列,该列在where子句中使用并且插入是随机的。

中国_网管联盟bitsCN.com

2、按范围存取的列,如pri_order > 100 and pri_order < 200。 [bitsCN_com]

3、在group by或order by中使用的列。

中国_网管联盟bitsCN.com

4、不经常修改的列。

bitsCN~com

5、在连接操作中使用的列。

www_bitscn_com中国.网管联盟

二、非聚簇索引(nonclustered indexes)的使用 www@bitscn@com

 SQLServer缺省情况下建立的索引是非聚簇索引,由于非聚簇索引不重新组织表中的数据,而是对每一行存储索引列值并用一个指针指向数据所在的页面。换句话说非聚簇索引具有在索引结构和数据本身之间的一个额外级。一个表如果没有聚簇索引时,可有250个非聚簇索引。每个非聚簇索引提供访问数据的不同排序顺序。在建立非聚簇索引时,要权衡索引对查询速度的加快与降低修改速度之间的利弊。另外,还要考虑这些问题:

www@bitscn@com

1、索引需要使用多少空间。

[bitsCN_com]

2、合适的列是否稳定。

bbs.bitsCN.com

3、索引键是如何选择的,扫描效果是否更佳。 www@bitscn@com

4、是否有许多重复值。

DL@bitsCN_com网管软件下载

 对更新频繁的表来说,表上的非聚簇索引比聚簇索引和根本没有索引需要更多的额外开销。对移到新页的每一行而言,指向该数据的每个非聚簇索引的页级行也必须更新,有时可能还需要索引页的分理。从一个页面删除数据的进程也会有类似的开销,另外,删除进程还必须把数据移到页面上部,以保证数据的连续性。所以,建立非聚簇索引要非常慎重。非聚簇索引常被用在以下情况:

DL@bitsCN_com网管软件下载

1、某列常用于集合函数(如Sum,....)。 [bitsCN_com]

2、某列常用于join,order by,group by。 bbs.bitsCN.com中国网管论坛

3、查寻出的数据不超过表中数据量的20%。
 

DL@bitsCN_com网管软件下载

www_bitscn_com中国.网管联盟


共3页: 上一页 1 [2] [3] 下一页

收藏本文】 【推荐好友】 【欢迎投稿】 【打印本文
上一篇:SQL Server数据在不同数据库中的应用   下一篇:用SQL Server 2005同义字缩短开发时间
 相关文章:
·SQL Server数据在不同数据库中的应用 ·用SQL Server 2005同义字缩短开发时间
·动态创建MSSQL数据库表存储过程 ·SQL Server 查询分析器快捷键集合
·SQL Server如何访问sybase数据库的表 ·向外扩展SQL Server 实现更高扩展性
关于SQL Server中索引使用及维护简介 评论:
    评论加载中…
  
  责任编辑:网盟  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
 
本类热门排行:
1.部署 Microsoft SQL Serv
2.通用SQL数据库查询语句精华使用简介
3.SQL入门:创建表
4.安装指南:SQL Server 2005安装及界面
5.在SQL Server 2000查询分析器里面收缩数
6.如何远程连接局域网内的sql server
7.SQL Server的数据类型介绍
8.剖析SQL Server 2005查询通知之基础篇
9.SQL Server定期自动备份
10.SQL Server 2005:数据类型最
最新推荐文章:
1.SQL Server数据在不同数据库中的应用
2.教你如何在SQL Server计算列和平均值
3.SQL Server 2005 - 实作CLR存储过程
4.部署 Microsoft SQL Server 2005 群集
5.SQL Server 2005与DB2 8.2之对比
6.专家谈SQL Server 2005 CLR
7.SQL Server 2005:向系统表说再见(图)
8.保护SQL服务器的安全-用户识别问题
9.如何应用SQL Server中的DBCC避免堵塞
10.SQL Server讲堂:加密与SQL注入(图)
本类最新文章:
1.50种方法巧妙优化SQL Server数据库
2.在SQL Server中使用CLR调用.NET方法
3.比较SQL Server约束和DML触发器
4.向外扩展SQL Server 实现更高扩展性
5.SQL Server 查询分析器快捷键集合
6.用SQL Server 2005同义字缩短开发时间
7.SQL Server数据在不同数据库中的应用
8.SQL Server如何访问sybase数据库的表
9.动态创建MSSQL数据库表存储过程
10.教你如何在SQL Server计算列和平均值
网管论坛交流:
·情人节快乐
·版主其实很辛苦(献给中国网管论坛所有版
·下雪了(精华哈)
·流量控制/限速讨论专贴(随时整理+更新
·经过了试用期,我自己写的述职报告!有用
·转网络中最美丽的行为
·过年了,早点回家看看爹娘
·图文并茂教你组建磁盘阵列
·计算机日常清洁维护方法
·郁闷啊,服务器修好了,可是……