【发布时间】:2016-10-24 06:17:36
【问题描述】:
我有一些数据需要放入 PostgreSQL 数据库。这些数据与学校有关。所以有很多与学校相关的属性,主要是小整数、浮点数或小文本。并且所有数据每年都在变化。所以我正在创建一个名为YearlyData 的实体并将属性放在那里。但问题是,属性的数量在 50-60 左右。现在这些不能被规范化,因为它们是学校本身的简单属性。所以我在道德上不能将它们分成表格。但我不确定这是否会影响我的表现。
我可以尝试对这些数据进行分类并将它们放在单独的表中,并从YearlyData 表中指向它们。但是,我猜想尝试使用 20-30 多个参数搜索学校会导致大量的连接。我也不确定这是否会影响我的表现。
有什么专家建议吗?
【问题讨论】:
-
我不认为 50-60 列会导致问题,除非它们是非常宽的列,例如大量文本和 blob 数据。我们在谈论什么样的数据?如果它主要是整数、日期等,那么它可能没问题。
-
是的。主要是整数、浮点数或小文本。
-
应该没问题,很有可能。当然,您可以通过测试获得实际指标。创建表,用大量随机垃圾数据填充它,在应用程序中运行一些场景并测量性能。此外,您希望该表有多少条记录?索引和优化将在某个时候发挥作用,如果有大量数据,那么将其中一些数据分解为针对搜索优化的表可能是有意义的。
-
目前大约有 100,000 条记录。我真的没有那么多数据的经验,所以有疑问。我想我能做的最好的就是你说的。测试一下。
-
测试它永远是最好的信息来源。 100,000 条记录并不是真正的 很多 数据,所以这可能会很好。但是,如果您最终在其中的许多列上放置了大量索引,那么您可能会开始获得性能收益递减。此时,您可能需要将其分解为几个表,其中针对具有特定索引的搜索优化表运行搜索,并将结果与其他表连接以获取剩余数据。这是需要考虑的事情,但在有真正的指标证明之前没有必要。
标签: postgresql database-design