科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道建立合理的索引提高SQL Server性能(3)

建立合理的索引提高SQL Server性能(3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:赛迪网技术社区 来源:赛迪网技术社区 2007年9月4日

关键字: 3977 数据库 SQL Server SQL Server 各版本

  • 评论
  • 分享微博
  • 分享邮件
五、索引的维护 =53P]1I  
 91 }k]-,  
上面讲到,某些不合适的索引影响到SQL Server的性能,随着应用系统的运行,数据不断地发生变化,当数据变化达到某一个程度时将会影响到索引的使用。这时需要用户自己来维护索引。索引的维护包括: ~`#MS  Y  
nKjlUog  
1、重建索引 ],3i}W  
.f(0wT  
随着数据行的插入、删除和数据页的分裂,有些索引页可能只包含几页数据,另外应用在执行大块I/O的时候,重建非聚簇索引可以降低分片,维护大块I/O的效率。重建索引实际上是重新组织B-树空间。在下面情况下需要重建索引: q dd W1+  
 0B&/}&+  
(1)、数据和使用模式大幅度变化。 (Y$ME%  
y{4OD'{g   
(2)、排序的顺序发生改变。 zb~FV:hbK  
(7jhvl]  
(3)、要进行大量插入操作或已经完成。 J\plCgmM0  
Vi$Tutx2d  
(4)、使用大块I/O的查询的磁盘读次数比预料的要多。 HrIP3{I0=  
@|j)T(  
(5)、由于大量数据修改,使得数据页和索引页没有充分使用而导致空间的使用超出估算。 i+j!npO  
8$Gy=sL{  
(6)、dbcc检查出索引有问题。 FCW5?#"~  
NgCV,GLTi;  
当重建聚簇索引时,这张表的所有非聚簇索引将被重建。 l 5hQsx  
n,s!sgYf  
2、索引统计信息的更新 MSdBy:h  
swwD2I  
当在一个包含数据的表上创建索引的时候,SQL Server会创建分布数据页来存放有关索引的两种统计信息:分布表和密度表。优化器利用这个页来判断该索引对某个特定查询是否有用。但这个统计信息并不动态地重新计算。这意味着,当表的数据改变之后,统计信息有可能是过时的,从而影响优化器追求最有工作的目标。因此,在下面情况下应该运行update statistics命令: 9~84 {)  
SpSH7wz  
(1)、数据行的插入和删除修改了数据的分布。 e"cKP Xwa  
;Fv<4_)oN  
(2)、对用truncate table删除数据的表上增加数据行。 6 9S*C?A^  
bAeV"ISy  
(3)、修改索引列的值。 &MVC("{J  
p"Q>#ji m  
六、结束语 HD5[6Ok2  
,_Mtn(^82  
实践表明,不恰当的索引不但于事无补,反而会降低系统的执行性能。因为大量的索引在插入、修改和删除操作时比没有索引花费更多的系统时间。例如下面情况下建立的索引是不恰当的: K o%DZA  
] #ED=('?  
1、在查询中很少或从不引用的列不会受益于索引,因为索引很少或从来不必搜索基于这些列的行。 KWqzV%Bvem  
by+X  
2、只有两个或三个值的列,如男性和女性(是或否),从不会从索引中得到好处。 Iqs7>:{[ c  
uPaYu!  
另外,鉴于索引加快了查询速度,但减慢了数据更新速度的特点。可通过在一个段上建表,而在另一个段上建其非聚簇索引,而这两段分别在单独的物理设备上来改善操作性能。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章