如果表中包含大量未使用/未选择的列,是否会影响性能?

Nie*_*ian 3 sql postgresql performance

背景: 我有一张叫做汽车的桌子,里面装着很多二手车,约100万行.该表有170多列.该表仅针对各列进行索引.大多数列都是布尔值(例如has_automatic_gearbox等),其余的是字符串和数字(​​例如颜色和价格).这些车在一个视图中显示,我在170个中使用了大约80列.

我的问题: 所以我的问题是,它是否会对性能产生影响,是否在搜索时只选择表格中的80列,或者另一方面我创建了一个仅包含80列的新表格我需要,而不是总共170列?换句话说,它是否会对性能产生影响,表是否包含未被选中的列?

Ada*_*son 6

Andomar的评论是正确的,"这取决于".但是,如果你质疑是这样的:

表中的列数是否会影响选择查询?

那么答案是肯定的.它们是"额外的"还是"未使用的"是数据库设计的问题,与性能问题没有任何关系.

在所有其他条件相同的情况下,具有100列的表中的行将占用比具有10列的表中的行更多的空间.因为行会更大,所以您的服务器必须(相对)更难以在更宽的表中比在较小的表中查看相同数量的行.

像页面拆分这样的事情也会在行占用更多空间的表中更频繁地发生.

如果你的问题是(我认为这可能更符合你的要求)

在所有条件相同的情况下,从具有170列的表中提取80列的选择查询比从80列的表中提取80列的查询要慢吗?

那么答案应该是NO.