首页 > 解决方案 > RDBMS:将通常不一起查询的列放在一起是否会影响性能?

问题描述

示例:我们有列id, A1, A2, A3, B1, B2, B3A列通常与列一样一起查询,BA通常不会与一起查询B

(1) 将所有列存储在一个表中,与 (2) 将一个表拆分为A列,将一个表拆分为B列(这需要复制id列),是否会影响性能?

我正在使用 Postgres。

标签: postgresql

解决方案


1) 是的:一个表中的所有列都使得读取每一行的成本更高,因为每页的行数更少,因此需要读取更多的页面 - 更多的 I/O。

2)是的:当您确实需要 As 和 B 时,两个单独的表会比较慢,因为您需要将它们连接在一起。这通常具有更多的 I/O。

一般来说,你会用一个换另一个。如果你总是要消耗或使用一个小的、索引良好的集合,那可能没关系。如果您要遍历大量行,无论是因为没有有用的索引还是因为大量输出,那么您最好根据您的特定场景来衡量它,而不是猜测甚至应用经验法则。


推荐阅读