我有一个字段是一个字母数字字段,理想情况下是一个非唯一标识符的加密字段。它用于以多对多关系关联其他相当大的事实表。我没有此字段的相关维度,因为此 FK 没有其他属性。
示例:Abcdefgh12345
该字段位于一个相当大且不断增长的数据仓库中,其中事实表按时间聚集而不是像这样在键上聚集。
该列VARCHAR(50)
仅在 45 到 50 之间变化。必须检查,但我假设排序规则是SQL_Latin1_General_CP1_CI_AS
. 出于优化原因,我不使用 FK。全部由 ETL 控制。
碎片化
由于键的类型,很难索引。它的碎片是通过我最近进行的一系列测试来管理的,这些测试显示 75% 的填充因子至少可以通过减少每日增量负载的碎片至少一周直到可能需要完全重建,每周一次就可以了。
表现
随着填充因子从 100% 降低到 75%,插入和读取变得更慢。记录也如预期的那样变大了。任何带有 include 的索引都在很大程度上推动了插入的性能,但当然可以帮助需要它们的查询提高 10 倍。
问题
有没有人有在数据仓库环境中使用字母数字的良好经验?它的处理方式和索引现在很好,但我认为它可能会更好。我正在考虑在 ETL 过程中剥离密钥、形成新维度并添加更易于管理的密钥的想法。