情况:我们有一个大型数据库,其中包含许多非规范化表。我们经常不得不重新汇总数据以使汇总表保持同步。我们讨论过如何使用计算列来保持数据新鲜。我们还讨论了触发器,但这是一个单独的讨论。
在摘要表中,我们对表进行了规范化,以便将标准ID和标准说明存储在表中。本质上是假设该表将被足够频繁地重新汇总,因此,如果他们更改了标准描述,它也会在汇总表中对其进行更改。一个错误的假设。
问题:如果我们将汇总表中的标准说明设为从标准表中选择标准说明的派生/计算列,该怎么办?通过在具有100,000-500,000行的表上删除计算列是否会对性能产生巨大影响?
当计算列不占用大量计算并且不对大量行执行时,它们是很好的选择。您的问题是“删除计算列会带来成功吗”。除非此列是查询所使用的索引(对comp col进行索引的错误主意-我不知道是否可以依赖您的数据库),否则删除它不会损害性能(减少查询和处理数据的次数) )。
如果标准表具有描述,那么您应该从id将其加入,而不要使用任何计算。
您暗示了什么可能是真正的问题,那就是数据库的架构。以前,我遇到过类似的问题,其中的系统是为处理一件事而构建的,而诸如报告之类的东西则需要安装/插入。在不重构您的模式以平衡所有需求的情况下,Sunny使用视图的想法只是唯一的简便方法。
如果您要发布一些清理过的DDL和数据,并举例说明您尝试从数据库中获取的内容,我们可能会给您一个不太主观的答案。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。