我们使用SSDT来部署我们的数据库更改。我们有一个脚本每周重新创建索引。我们的脚本如下所示:
declare @cmd varchar(max)
set @cmd = '
CREATE NONCLUSTERED INDEX [iAudit-ModifiedDateTime] ON [dbo].[Audit]
(
[ModifiedDateTime] ASC
)
WHERE ModifiedDateTime > ''###''
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = ON, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]
'
set @cmd = replace(@cmd, '###', convert(varchar(8), dateadd(day, -3, getdate()), 112))
exec (@cmd)
不幸的是,当我们运行SSDT来更新数据库时,它会将索引更改为项目中的定义,或者在未包含时将其删除。有什么方法可以解决这个问题吗? 我们需要过滤索引的原因是将包含100万个行的Audit表中的最新记录添加到数据仓库中。
答案 0 :(得分:2)
有一些选项,按复杂程度排列: