欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » SQLServer教程 » 正文

热门阅读

Sql Server中ALTER INDEX的常用用法解析

创建时间:2011年12月08日 17:59  阅读次数:(11564)
分享到:
alter index在MSDN中是这样解释的:
通过禁用、重新生成或重新组织索引,或通过设置索引的相关选项,修改现有的表索引或视图索引(关系索引或 XML 索引)

它的功能很多,特别是对索引的操作。可惜自己对它的深入用法也不是很清楚,仅讲讲我自己常用它来实现的几个功能:
1,重建索引
2,重组索引
3,禁用索引
4,启用索引
5,禁用约束
6,启用约束

下面我们来一一讲解上面几个功能的实现
一、重建索引
随着数据库的数据量的增多,数据库在查找数据的时候会越来越慢,就好比一本书,当书越来越厚,我们要在这本书中找到想要的东西就会越来越慢,这时候,就会在书的前面增加目录来让我们快速查找要想要的信息。数据库也是一样,当其中的数据越来越的时候,我们也应该为数据库建立一个目录,以方便数据库快速的找到我们要查询的数据。这个目录,在数据库中就称之为索引。

当索引建立后,在我们对数据库进行增删改的过程中,会参生一定量的索引碎片,这些碎片会影响索引的查找速度,所以当碎片达到一定程序的时候,我们就需要对索引进行整理了。

利用alter index重建索引的sql语句:
ALTER INDEX 索引名 ON 表名 REBUILD

如果我们要重建某表的所有索引名,可以将上面sql语句中的'索引名'改为关键字'ALL',即sql语句如下:
ALTER INDEX all ON 表名 REBUILD

当然,重建索引的方法还可以在microsoft sql server management studio中选择:要重建的索引所在的表- >"索引",选择要查看的索引,选择"重新生成"或者"重新组织"来重建索引。

二,重组索引
需要重组索引的原因与重建索引的原因一样,都是为了让我们的索引更有效。
利用alter index重组索引的sql语句如下:
ALTER INDEX 索引名 ON 表名 REORGANIZE

其实也就是关键字REBUILD与REORGANIZE的区别。
如果我们要重组某表的所有索引名,可以将上面sql语句中的'索引名'改为关键字'ALL',即sql语句如下:
ALTER INDEX all ON 表名 REORGANIZE

既然重组索引与重建索引的最终目的都是一样,那么我们什么时候需要重建索引,什么时候需要重组索引呢?如果碎片比小于30%,我们可以重新组织索引,如果碎片比大于等于30%,我们可以选择重新生成索引。
查看索引碎片的方法可以参考如下文章:
利用sys.dm_db_index_physical_stats查看索引碎片等数据

三,禁用索引
禁用索引可以用以下sql语句来实现:
ALTER INDEX '索引名' ON '表名' DISABLE

四,启用索引
如果索引被禁用,则我们可以通过重建索引来重新启用它。

五,禁用约束
禁用约束的sql语句如下:
ALTER INDEX '主键名' ON '表名' DISABLE

该方法是通过禁用主键来禁用该主键所对应的所有外键,在外键被禁用时sql server会显示警告消息,比如我在禁用一个建有外键的主键时,sql server提示了以下消息:
警告: 由于禁用了索引 'PK__Assets_BackUp__3AC8D058',导致引用表 'Assets_BackUp' 的表 'Assets_BackUp_HrGoods' 上的外键 'DF_Assets_HG_Assets_BU' 也被禁用。
警告: 由于禁用了索引 'PK__Assets_BackUp__3AC8D058',导致引用表 'Assets_BackUp' 的表 'Assets_BackUp_Assets' 上的外键 'FK_Assets_BA_Assets_BU' 也被禁用。

六,启用约束
主键一旦被禁用,那么它对应的外键也禁用了,那么要如何重新启用这些约束呢?我们只要重建主键即可,对应的外键约束也自动被启用了。
sql语句如下:
ALTER INDEX '主键名' ON 表名 REBUILD


直接启用或禁用外键,可以参考本站以下文章:
SQL Server 临时禁用和启用所有外键约束

以上是本人对alter index语法的理解,因自己对alter index用法了解的有限,本章的内容也显示的单调,缺少示例,敬请理解,大家如果有补充,请积极参入评论。
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 78+57=? 的结果(结果是:135)
结  果: