我将数据加载到数据仓库中。
目前,为了方便和速度,我有一个脚本,用于在加载数据之前删除外键约束和索引。有一个大窗口,我可以在其中进行加载,因此我不需要担心用户在加载期间访问数据,但我不想影响数据库中其他表中的无关数据。
我在这里和其他地方做了一些研究来提出这个脚本,但我想知道是否有一些我可能会忽略的事情可能会使性能欠佳,或者我可能会遗漏一些重要的东西(我不知道 . .. 计算列什么的?)或者我做事顺序错误等等。
任何建议都值得赞赏,以使其健壮和高性能。
禁用约束和索引
编辑:我删除了WHILE评论者帮助我意识到是多余的循环。
Declare @schema varchar(128) = 'dbo';
Declare @sql nvarchar(max) = N'';
-- 1. Indices
-- Select a list of indexes in the schema and generate statements to disable them.
Select @sql = @sql + 'ALTER INDEX ' + QuoteName(idx.name) + ' ON ' + QuoteName(@schema) + '.' + QuoteName(obj.name) + ' DISABLE;' + CHAR(13)
From sys.indexes As idx
Join sys.objects As obj On idx.object_id = obj.object_id …Run Code Online (Sandbox Code Playgroud)