SQL Server 自动重建出现碎片的索引

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

SQL Server 自动重建出现碎片的索引1.索引碎片的产生?

由于在表里大量的插入、修改、删除操作而使索引页分裂。如果索引有了高的碎片,有两种情况,一种情况是扫描索引需要花费很多的时间,另一种情况是在查询的时候索引根本不使用索引,都会导致性能降低。

2.碎片类型分为:

2.1 内部破碎

由于索引页里的数据插入或修改操作而发生,以数据作为稀疏矩阵的形式的分布而结束,这将导致数据页的增加,从而增加查询时间。

2.2外部破碎

由于索引/数据页的数据插入或修改而发生,以页码分离和在文件系统里不连贯的新的索引页的分配而结束,数据库服务器不能利用预读操作的优点,因为:下一个相关联的数据页不临近,而且这些相关连的下面的页码可能在数据文件的任何地方。

自动重建发生碎片的索引

在数据中新建碎片整理存储过程

Sql代码--================================================--TEMPLATEGENERATEDFROMTEMPLATEEXPLORERUSING:--CREATEPROCEDURE(NEWMENU).SQL----USETHESPECIFYVALUESFORTEMPLATEPARAMETERS--COMMAND(CTRL-SHIFT-M)TOFILLINTHEPARAMETER--VALUESBELOW.----THISBLOCKOFCOMMENTSWILLNOTBEINCLUDEDIN--THEDEFINITIONOFTHEPROCEDURE.--================================================SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGO--=============================================--AUTHOR:<AUTHOR,,WUXIANGQIAN>--CREATEDATE:<CREATEDATE,2014-05-16>--DESCRipTION:<DESCRIPTION,重建出现碎片的索引>--=============================================ALTERPROCEDUREUSP_IMS_DEFRAGMENT_INDEXESAS--声明变量SETNOCOUNTONDECLARE@TABLENAMEVARCHAR(128)--表名称(已发生索引碎片)DECLARE@EXECSTRVARCHAR(255)--执行重建索引的语句DECLARE@INDEXNAMECHAR(255)--索引名称DECLARE@DBNAMESYSNAME--数据库名称DECLARE@DBNAMECHARVARCHAR(20)--数据库名称DECLARE@TABLEIDCHARVARCHAR(255)--表名称(用

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航