Performance 如果Postgres 9中的表有额外的未使用列,那么访问该表的速度会变慢吗?
假设我有一个包含两列、一个主键和一些数据的表。该表将非常大,并且将非常频繁地被访问Performance 如果Postgres 9中的表有额外的未使用列,那么访问该表的速度会变慢吗?,performance,postgresql,Performance,Postgresql,假设我有一个包含两列、一个主键和一些数据的表。该表将非常大,并且将非常频繁地被访问 现在想象一下,我想添加另一段数据,它很少被访问。我是否可以安全地假设,如果公共查询不访问新列,则向表中添加另一列不会使它们变得更慢 理论上是的:速度会慢一些,因为每页磁盘容纳的行数会少一些。要读取表行,您需要访问更多页面 实际上,空值占用1位空间,varlena类型存储在扩展存储(toast)中。因此,它几乎不会产生实质性影响。理论上是的:它会更慢,因为每个磁盘页面可以容纳的行更少。要读取表行,您需要访问更多页面
现在想象一下,我想添加另一段数据,它很少被访问。我是否可以安全地假设,如果公共查询不访问新列,则向表中添加另一列不会使它们变得更慢 理论上是的:速度会慢一些,因为每页磁盘容纳的行数会少一些。要读取表行,您需要访问更多页面
实际上,空值占用1位空间,varlena类型存储在扩展存储(toast)中。因此,它几乎不会产生实质性影响。理论上是的:它会更慢,因为每个磁盘页面可以容纳的行更少。要读取表行,您需要访问更多页面
实际上,空值占用1位空间,varlena类型存储在扩展存储(toast)中。因此它几乎没有实质性影响。我没有说新列都是空的,甚至大部分都是空的。事实上,大部分都是中等长度的文本。你的答案仍然适用吗?@Timwi:他的答案仍然适用。中等长度的文本将被存储在行外,就像一个BLOB,除非对您透明。观测到的速度差基本上为零。我没有说新列都是零,甚至大部分都是零。事实上,大部分都是中等长度的文本。你的答案仍然适用吗?@Timwi:他的答案仍然适用。中等长度的文本将被存储在行外,就像一个BLOB,除非对您透明。观测到的速度差基本上为零。