RDBMS:共同定位的列(通常不一起查询)是否会对性能产生影响?

时间:2019-05-31 03:47:56

标签: postgresql

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

是否会导致(1)将所有列存储在一个表中,而(2)将一个表划分为A列,将一个表划分为B列(这需要复制{ {1}}列)?

我正在使用Postgres。

1 个答案:

答案 0 :(得分:0)

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

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

通常,您将要权衡另一个。如果您总是要使用或使用索引良好的小型集合,则可能没有关系。如果由于没有有用的索引或输出量大而要遍历大量行,那么与猜测甚至应用经验法则相比,在特定情况下进行测量将是更好的选择。