SQL Server 自动重建出现碎片的索引
1.索引碎片的产生?
由于在表里大量的插入、修改、删除操作而使索引页分裂。如果索引有了高的碎片,有两种情况,一种情况是扫描索引需要花费很多的时间,另一种情况是在查询的时候索引根本不使用索引,都会导致性能降低。
2.碎片类型分为:
2.1 内部破碎
由于索引页里的数据插入或修改操作而发生,以数据作为稀疏矩阵的形式的分布而结束,这将导致数据页的增加,从而增加查询时间。
2.2外部破碎
由于索引/数据页的数据插入或修改而发生,以页码分离和在文件系统里不连贯的新的索引页的分配而结束,数据库服务器不能利用预读操作的优点,因为:下一个相关联的数据页不临近,而且这些相关连的下面的页码可能在数据文件的任何地方。
自动重建发生碎片的索引
在数据中新建碎片整理存储过程
Sql代码- --================================================
- --TEMPLATEGENERATEDFROMTEMPLATEEXPLORERUSING:
- --CREATEPROCEDURE(NEWMENU).SQL
- --
- --USETHESPECIFYVALUESFORTEMPLATEPARAMETERS
- --COMMAND(CTRL-SHIFT-M)TOFILLINTHEPARAMETER
- --VALUESBELOW.
- --
- --THISBLOCKOFCOMMENTSWILLNOTBEINCLUDEDIN
- --THEDEFINITIONOFTHEPROCEDURE.
- --================================================
- SETANSI_NULLSON
- GO
- SETQUOTED_IDENTIFIERON
- GO
- --=============================================
- --AUTHOR:<AUTHOR,,WUXIANGQIAN>
- --CREATEDATE:<CREATEDATE,2014-05-16>
- --DESCRipTION:<DESCRIPTION,重建出现碎片的索引>
- --=============================================
- ALTERPROCEDUREUSP_IMS_DEFRAGMENT_INDEXES
- AS
- --声明变量
- SETNOCOUNTON
- [email protected](128)--表名称(已发生索引碎片)
- [email protected](255)--执行重建索引的语句
- [email protected](255)--索引名称
- [email protected]数据库名称
- [email protected](20)--数据库名称
-
[email protected](255)--表名称(用