mor*_*550 6 sql-server-2008 data-warehouse sql-server best-practices
在我们的 Datawarehouse 上下文中,我们必须更新 ETL 中事实表中的一些记录。
我们所做的一件事是在最重的查询之前创建非聚集索引,然后删除它们。这使我们在查询中扫描表所花费的时间少得多,并且构建索引所花费的时间影响非常小(1-2 分钟)。
这是一种不好的做法吗?
注意:我们现在无法对表进行分区。
为 ETL 作业构建临时索引不一定是坏习惯,因为索引构建相当快。如果您在非常大的表上进行相对较小的增量更新,那么效率可能不那么高,但听起来似乎并非如此。
唯一需要注意的是,如果您希望表格随着时间的推移而大幅增长。如果它们只是 ETL 的工作表,那么它可能没问题。如果表是将在未来 5 年内积累大量数据的事实表,那么索引重建可能会随着时间的推移而变慢。
对于暂存数据,删除索引然后加载将使批量加载到暂存更快,并且您可能需要向暂存表添加索引以支持提供 ETL 过程的查询。