代码改变世界

SQL Server2005索引简介

2011-06-22 14:48  熬夜的虫子  阅读(372)  评论(0编辑  收藏  举报

索引简介:

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

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

非聚集索引:非聚集索引具有独立于数据行的结构。非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。从非聚集索引中的索引行指向数据行的指针称为行定位器。行定位器的结构取决于数据页是存储在堆中还是聚集表中。对于堆,行定位器是指向行的指针。对于聚集表,行定位器是聚集索引键。

索引设计:

索引设计不佳和缺少索引是提高数据库和应用程序性能的主要障碍。为数据库及其工作负荷选择正确的索引是一项需要在查询速度与更新所需开销之间取得平衡的复杂任务。

索引设计原则:

大量的索引会影响DML语句的性能;
对小表进行索引可能不会产生优化效果;
对经常用于查询中的谓词和连接列创建非聚集索引;
覆盖索引可以提高查询性能;
聚集索引,最好保持较短的索引键;
考虑对定义完善的的列使用筛选索引;
如果索引包含多个列 ,应考虑列的顺序;
创建索引:

每个表只能有一个聚集索引;
每个表最多有249个非聚集索引;
每个索引最多16个键列;
索引键最长900字节;
大型对象数据类型不能作为索引键列;


索引优化:

无论何时对基础数据执行插入,更新或删除操作,数据库引擎都会自动维护索引。这些修改可导致索引中产生碎片;碎片非常多的索引可能会降低查询性能,导致应用程序响应缓慢。

1.定期整理索引;
2.设置索引并行度;
3.分析TRACE数据,调整索引;