我对两种设计的性能有疑问。目标是存储多种类型的实体,它们共享一些属性但也不同。
方法 1:多个表,每个表建模一个实体
Entity1 - C1, C2, C3
Entity2 - C1, C2, C4
Entity3 - C1, C2, C5
要查询,我需要UNION ALL
对所有表执行 a 。
方法 2:包含所有列和类型列的单个表
All - Type, C1, C2, C3, C4, C5
在这里,我可以直接查询列。
问题是该UNION ALL
方法是否存在任何性能问题?这个问题类似于之前在 PostsgreSQL 上提出的问题,但尚未得到回答。
编辑:
感谢您的所有回答。
实体表是日期索引的。并且查询大部分是过滤的时间日期或过滤的共享字段。假设 C1 是日期,C2 是字符串,95% 的查询看起来像 C1>=from 和 C1<=to,或 C2='SomeId'。
记录数量增长缓慢,每个实体每天可能有几百条。列数不会超过 150。但是,共享列的数量很少。目前我已经实现了方法 1,因为每个实体都可以使用共享以外的字段作为主键。这样约束更自然。