我知道对于像 Postgresql 这样的关系数据库,使用分隔表会更有效,但我担心性能问题,因为执行次数最多的查询将使用UNION ALL
.
我必须选择处理这个问题。第一个是:
table1 -> column1, column2
table2 -> column1, column2
table3 -> column1, column2, column3
在这个解决方案中,我必须在生产中使用 3 个不同的查询合并,UNION ALL
这个查询将由登录系统的用户执行(系统中执行次数最多的查询)
另一个是:
table -> column1, column2, typeColumn, extraColumnForTable3
在这个解决方案中,我必须创建一个额外的列typeColumn
来区分该行是哪种类型。而且我还必须extraColumnForTable3
为该类型创建一个列,并且类型table3
为 NULL 。在此解决方案中,执行次数最多的查询将仅包含一条语句。table2
table1
SELECT
生产中将有数百万行,所以我担心性能。NULL
值可能会在数据库中占用额外的空间,但我认为它可以忽略不计。我将使用部分索引来消除 NULL 值,因此我认为它不会影响获取特定类型的其他查询。您认为哪一种在生产中更有效率?