数据仓库不好的做法?

mor*_*550 6 sql-server-2008 data-warehouse sql-server best-practices

在我们的 Datawarehouse 上下文中,我们必须更新 ETL 中事实表中的一些记录。

我们所做的一件事是在最重的查询之前创建非聚集索引,然后删除它们。这使我们在查询中扫描表所花费的时间少得多,并且构建索引所花费的时间影响非常小(1-2 分钟)。

这是一种不好的做法吗?

注意:我们现在无法对表进行分区。

mrd*_*nny 9

如果它对你有用,那么这是一个很好的做法。数据库基本上没有硬性规则。


Con*_*lls 7

为 ETL 作业构建临时索引不一定是坏习惯,因为索引构建相当快。如果您在非常大的表上进行相对较小的增量更新,那么效率可能不那么高,但听起来似乎并非如此。

唯一需要注意的是,如果您希望表格随着时间的推移而大幅增长。如果它们只是 ETL 的工作表,那么它可能没问题。如果表是将在未来 5 年内积累大量数据的事实表,那么索引重建可能会随着时间的推移而变慢。

对于暂存数据,删除索引然后加载将使批量加载到暂存更快,并且您可能需要向暂存表添加索引以支持提供 ETL 过程的查询。