我有一个数据仓库环境,并且有关于索引的问题。我有一个标题事实表,然后连接到详细级别的事实表。然后,详细事实表连接到许多维度。
所以我们有:
html { font-size: 15px; }
在我的查询中,我需要将FactHeader
FactDetail
Dim1
Dim2
Dim3
Dim4
加入到所有维度表中,以获取报告需求的说明。
我在FactDetail
上有一个非聚集索引。我的问题是:我应该在这个非聚集索引中包含所有外键还是应该在外键上创建单独的非聚簇索引?如果我创建单独的索引,它正在进行聚簇索引扫描,它只在标识列上。
如果我创建一个非聚集索引,那么它执行索引搜索,当然还会返回所有外键。对我而言,似乎我应该只使用include来做一个非聚集索引,但出于某些原因,这对我来说似乎没有意义。
任何建议都表示赞赏。
答案 0 :(得分:1)
因此,在设计索引时,它基于OLTP或OLAP。由于您的数据仓库是索引,因此您的索引将基于OLAP。因此,在外键上创建单独索引的规则适用于OLTP数据库设计。由于OLAP主要用于数据检索,因此您将主要根据查询设计索引。索引体系结构非常重要,因为它很昂贵,只包括B树中的所有列。但是如果你的查询在所有相关表上都有一个连接,那么是,有一个带有这些外键的非聚集索引。