示例:我们有id
,A1
,A2
,A3
,B1
,B2
,B3
列。 A
列和B
列通常一起被查询,但是A
通常不与B
同时被查询。
是否会导致(1)将所有列存储在一个表中,而(2)将一个表划分为A
列,将一个表划分为B
列(这需要复制{ {1}}列)?
我正在使用Postgres。
答案 0 :(得分:0)
1)是:一个表中的所有列都使读取每一行的开销更大,因为每页的行数较少,因此需要读取更多的页面-更多的I / O。
2)是:当您同时需要As和B时,两个单独的表会变慢,因为您需要将它们连接在一起。通常,它具有更多的I / O。
通常,您将要权衡另一个。如果您总是要使用或使用索引良好的小型集合,则可能没有关系。如果由于没有有用的索引或输出量大而要遍历大量行,那么与猜测甚至应用经验法则相比,在特定情况下进行测量将是更好的选择。