索引值还是为尺寸创建新列?

时间:2019-07-29 12:29:48

标签: sql sql-server indexing

主表有5-25列和1,000,000-100,000,000行,大多数列都是FK到表的值少于100,例如'unique char(6)',并且许多执行计算,联接和分组的视图需要显示用户值,例如原始的“唯一字符(5)”。

在这种情况下,最好为每个维度表创建tinyint identity(1,1)索引列,并将它们联接到视图结果,或者在像char(6)这样的原始值上创建和使用索引?

1 个答案:

答案 0 :(得分:1)

您应该测试一下哪个效果更好。

但是,假设使用tinyint 的维度表会提高性能是非常合理的,因为它们会显着减小每行的大小-从5或6个字节减少到1个字节。这意味着您的大表可以容纳更少的页面,从而减少了I / O时间。

基于此的是连接成本。但是,参考表很容易装入内存。并且通过将查找键设为表上的主键,查找也将更快。