加入收藏 | 设为首页 | 会员中心 | 我要投稿 航空爱好网 (https://www.52kongjun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

mssql重建索引 Sql Server中ALTER INDEX的常用用法解析_踏雪无痕的博客

发布时间:2022-11-01 14:00:49 所属栏目:MsSql教程 来源:转载
导读: alter index在MSDN中是这样解释的:
通过禁用、重新生成或重新组织索引,或通过设置索引的相关选项,修改现有的表索引或视图索引(关系索引或 XML 索引)。
它的功能很多,特别是对索引的操

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

既然重组索引与重建索引的最终目的都是一样mssql重建索引,那么我们什么时候需要重建索引,什么时候需要重组索引呢?如果碎片比小于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

(编辑:航空爱好网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!