当前位置: 首页 > 面试题库 >

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

郎项禹
2023-03-14
问题内容

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

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


问题答案:

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

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

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

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

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

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

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

那么答案应该是“ 否”



 类似资料:
  • 问题内容: 因此,这更多是一个设计问题。 我有一个主键(例如用户的ID),并且有大量与该用户相关联的信息。 我应该根据信息将多个表细分为几类,还是只有一个表包含许多列? 我过去这样做的方法是拥有多个表,例如,一个表用于应用程序使用情况数据,一个表用于配置文件信息,一个表用于后端令牌等,以使事情看起来井井有条。 最近有人告诉我,最好不要那样做,有一个包含很多列的表也可以。关键是,所有这些列都具有相同

  • 问题内容: 我怀疑Java代码中未使用的导入和未使用的对象是否会对性能产生影响? 假设一个对象已初始化并且从未使用过,会发生什么?未使用进口的成本是多少 问题答案: 这是一个非常普遍的问题。 像大多数性能问题一样,最好的方法是编写最清晰,最简单的代码,因为这样可以提高代码的可维护性,并有助于确保代码即使更改后也能正常运行。(聪明/难以理解/不必要地开始,详细的代码可以快速运行,但是由于只是凡人而改

  • 问题内容: 如何测试一个列表是否包含另一个列表(即它是一个连续的子序列)。假设有一个名为contains的函数: 编辑: 问题答案: 这是我的版本: 正如安德鲁·贾菲(Andrew Jaffe)在他的评论中指出的那样,它返回一个元组(start,end + 1),因为我认为这更像pythonic。它不对任何子列表进行切片,因此应该相当有效。 新手感兴趣的一点是,它使用了for语句上的else子句-

  • 本文向大家介绍MongoDB是否有许多insert \ updates而不影响性能?,包括了MongoDB是否有许多insert \ updates而不影响性能?的使用技巧和注意事项,需要的朋友参考一下 使用插入多个文件合并为一个集合。这样,您可以使用来更新性能。 让我们创建包含文档的集合并插入多个文档- 在方法的帮助下显示集合中的所有文档- 这将产生以下输出- 使用- 这将产生以下输出-

  • 问题内容: http://msdn.microsoft.com/zh- CN/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx 我习惯于使用add()函数将sql参数添加到sqlCommand中。这使我可以指定sqlParameter的类型,但是需要另一行来设置值。 使用AddWithValue函数很好,但

  • 问题内容: 亚马逊称该 加密和解密是透明处理的,因此您无需修改​​应用程序即可访问数据 我的应用程序(Rails,MySQL,Elasticsearch)构建了大量图形,因此查询了许多数据。根据我以前对数据库加密的经验,它确实会影响数据的检索速度(因为我们只能说记录在读取和解密后是否符合条件)。 有没有相关的基准?或者,也许您曾经使用过AWS的这种服务器端加密?我是否完全需要担心性能变化? 对我来