广告
返回顶部
首页 > 资讯 > 数据库 >sql server临时删除/禁用非聚集索引并重新创建加回/启用的简便编程方法研究对比
  • 878
分享到

sql server临时删除/禁用非聚集索引并重新创建加回/启用的简便编程方法研究对比

摘要

前言:  由于新型冠状病毒影响,博主(zhang502219048)在2020年1月份从广东广州工作地回到广东揭阳产业转移工业园磐东街道(镇里有阳美亚洲玉都、五金之乡,素以“金玉”闻名)老家后,还没过去广州现场复工,年后又延迟复工

sql server临时删除/禁用非聚集索引并重新创建加回/启用的简便编程方法研究对比

前言:
  由于新型冠状病毒影响,博主(zhang502219048)在2020年1月份从广东广州工作地回到广东揭阳产业转移工业园磐东街道(镇里有阳美亚洲玉都、五金之乡,素以“金玉”闻名)老家后,还没过去广州现场复工,年后又延迟复工 + 居家办公,并且在老家对原来房子进行简单装修,1月份到3月份没时间去写下博文。今天就来对居家办公期间摸索到的一个数据库编程技巧进行整理并分享给大家。

问题场景:
  在大批量删除数据库表部分数据、arcHive数据的时候,如果数据库表的非聚集索引比较多比较大,会严重影响删除性能,这时候就需要采取适当措施,避免删除数据过程中不断去维护非聚集索引,可以先临时删除/禁用一些非聚集索引,再进行数据删除操作,提高删除性能,删除完数据后,再重新创建加回/启用这部分非聚集索引。

解决方案1:
先备份非聚集索引,然后删除非聚集索引,最后重新创建非聚集索引。删除和创建索引脚本如下:

--临时删除非聚集索引
drop index [NonClusteredIndex-502219048] on [dbo].[table1]

--==============
--删除部分表数据
--==============

--重新创建加回非聚集索引
create nonclustered index [NonClusteredIndex-502219048] on [dbo].[table1]
(
    [num] asc
)

解决方案2(推荐):
先禁用非聚集索引,最后重新启用非聚集索引。禁用和启用索引脚本如下:

--临时禁用非聚集索引
alter index [NonClusteredIndex-502219048] on [dbo].[table1] disable

--==============
--删除部分表数据
--==============

--重新启用非聚集索引
alter index [NonClusteredIndex-502219048] on [dbo].[table1] rebuild

结论:
可以看到使用方案1的话,需要备份索引脚本,创建索引脚本也需要指定具体的字段,相对繁琐一些; 
而使用方案2的话,只需要指定具体的表名和索引名称,而不需要具体的字段,相对来说比较简便快捷,简化了编程。

【尊重作者劳动成果,转载请注明博文来源:https://www.cnblogs.com/zhang502219048/p/12730451.html

您可能感兴趣的文档:

--结束END--

本文标题: sql server临时删除/禁用非聚集索引并重新创建加回/启用的简便编程方法研究对比

本文链接: https://www.lsjlt.com/news/5577.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作