解决方法
这取决于……连接表本质上比一个大表“预加入”即非规范化要慢.但是,通过非规范化,您将创建数据重复,并且您的表将变得更大.规范化被认为是一件好事,因为它创建了可以回答“任何”问题的数据库,如果正确完成,您可以构建一个选择来获取数据.在某些其他形式的数据库中情况并非如此,现在(大多数)是历史性的无关紧要,标准化/关系数据库赢得了这场战斗.
回到你的问题,使用去规范化使事情变得更快是一种公认的技术.通常最好运行您的数据库一段时间,这样您就知道要取消规范化的内容以及单独留下什么,并且将数据保持为“正确”的规范化形式并将数据拉入一组非规范化报告中也很常见桌子定期.如果该过程是作为报告运行本身的一部分完成的,那么数据也始终是最新的.
作为过度规范化的一个例子,我曾经看过过去的数据库,一周的日子和一年中的几个月被分成不同的表 – 日期本身已经标准化 – 你可以走得太远.