我正在使用每天收集大约 35,000 行的非规范化表。
数据以自动化方式从我们的生产数据库中进行非规范化。对数据进行非规范化的主要动机之一是基于 C# 的 UI 使用了许多复杂的、非持久性的计算,为了保证质量,我们不想通过视图重新创建这些计算。
目前,我们在此表上没有任何索引,但正在探索添加它们。我是一名统计学家,我仍在努力思考所有索引的细微差别。我遇到的最大问题是索引完全相关的 INT 和 VARCHAR 的后果。
也就是说,InstrumentId (INT) 和 InstrumentName (VarChar(50)) 这两个字段是从同一个规范化表中记录的。我们将两者都包含在非规范化数据中,这样我们就可以在没有连接的情况下显示名称,也可以在 INT 上进行查询。(该数据库有大约 200 种独特的乐器)
尽管我们出于查询的目的包含了 INT,但有时我们很懒,喜欢在 VarChar 上进行查询,因为它更容易验证条件。
当我们开始添加索引时,我很好奇将 INT 和 VARCHAR 索引为单独的非聚集索引会有什么影响。考虑因素包括速度、存储、碎片等。
将两者都添加为索引是一种合理的方法,还是可能会在未来造成麻烦?对讨论这些问题的阅读材料的参考表示赞赏。
我看过这个问题,它讨论了选择一个或另一个的选项,但我正在努力寻找有关使用两者的参考资料。