我听我的团队领导说,在过去的一些项目中,他们不得不取消规范化以加快查询速度。
我觉得可能和table union有关系
拥有更多瘦 table 真的比拥有更少胖 table 效率低吗?
最佳答案
这取决于……连接表本质上比拥有一个“预连接”(即去规范化)的大表要慢。但是,通过非规范化,您将创建数据重复并且您的表将变得更大。规范化被视为一件好事,因为它创建的数据库可以回答“任何”问题,如果正确完成,您可以构建一个选择来获取您的数据。在某些其他形式的数据库中情况并非如此,现在(大部分)与历史无关,规范化/关系数据库赢得了这场战斗。
回到您的问题,使用去规范化来加快速度是一种广为接受的技术。通常最好运行你的数据库一段时间,这样你就知道什么要反规范化,什么不要理会,而且通常将数据保留为“正确”的规范化形式,并将数据提取到一组非规范化报告中表定期。如果该过程作为报告运行本身的一部分完成,那么数据也始终是最新的。
作为过度规范化的一个例子,我在过去看到过 DB,其中星期几和一年中的月份被提取到单独的表中——日期本身被规范化了——你可能做得太过分了。
p>关于sql-server - 使用规范化表真的更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540136/