小编典典

如果一个表包含许多未使用/未选择的列,是否会影响性能?

sql

背景:
我有一个叫做car的表,里面有很多二手车,大约有100万行。该表有170列多一点。该表仅在各个列上建立索引。大多数列是布尔值(例如has_automatic_gearbox等),其余列是字符串和数字(​​例如颜色和价格)。这些汽车以视图显示,其中我使用了170列中的约80列。

我的问题:
所以我的问题是,是否在执行搜索时仅从表中选择80列,或者另一方面,我仅由这80列组成的新表对性能有影响?我需要而不是总共170列?因此,换句话说,表包含未选择的列会对性能产生影响吗?


阅读 178

收藏
2021-04-07

共1个答案

小编典典

安多玛(Andomar)在他的评论中说“这取决于”是正确的。但是,如果您提出这样的问题:

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

那么答案是 肯定的 。它们是“额外”还是“未使用”是数据库设计的问题,与性能问题无关。

在所有其他条件相同的情况下,具有100列的表中的一行将比具有10列的表中的一行占用更多的空间。因为行将更大,所以服务器(相对)必须努力(相对)遍历较宽表中的行数要小于较小表中的行数。

诸如页面拆分之类的事情也会在行占据更多空间的表中更频繁地发生。

如果您的问题是(我想这可能与您要问的内容更相似)

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

那么答案应该是“ 否”

2021-04-07