数据库性能:使用一个具有最大值的实体/表.可能的属性或拆分到不
我需要设计一些数据库表,但我不确定性能影响.在我的情况下,它更多地关于读取性能而不是保存数据.
情况 在模式识别的帮助下,我发现需要在postgresql数据库中保存多少个特定对象的值. 目前,我有3个实体/表,它们的区别仅在于具有相同类型的1,2或3个不可空的属性. 例如: EntityTestOne/TableOne { ... other (same) properties String optionOne; } EntityTestTwo/TableTwo { ... other (same) properties String optionOne; String optionTwo; } EntityTestThree/TableThree { ... other (same) properties String optionOne; String optionTwo; String optionThree; } 我希望在生产中有数百万条记录,并且我正在考虑这种变体的性能影响以及可能的替代方案. 备择方案 我想到的其他选择: >仅使用一个具有3个选项的实体类或表(optionTwo和optionThree将可为空).如果要谈论数百万的预期记录 例如: EntityOption { String value; } EntityTest { ... other (same) properties List<EntityOption> options; } >如果要使用此关系:在创建新记录的情况下,什么会提供更好的性能: 因为我不是那么强大的数据库设计和使用hibernate我对这些方法的优点和缺点感兴趣,如果有更多的选择. 谢谢! 解决方法我认为这个案例很清楚:如果每个对象有三个属性的上限,请使用一个具有可空属性的表.NULL值不占用数据库中的任何空间.对于每一行,PostgreSQL都存储一个包含哪些属性为NULL的位图.始终存储此位图,除非所有属性都不可为空.有关详情,请参见the documentation. 使用三个不同的表或将属性存储在单独的表中可能会导致查询中出现UNION或JOIN,从而使查询更加复杂和缓慢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |