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

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值