RDBMS:将通常不一起查询的列放在一起是否会降低性能



示例:我们有列idA1A2A3B1B2B3列。A列通常一起查询,B列也是如此,但A通常不会与B同时查询。

(1( 将所有列存储在一个表中,与 (2( 拆分一个表用于A列和一个表用于B列(这需要复制id列(相比,性能是否会受到影响?

我正在使用Postgres。

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

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

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

相关内容

最新更新