SQL表中未选择的列会降低查询速度吗?

时间:2018-10-04 22:53:30

标签: sql sql-server

例如,假设我在表X中有A,B,C列。如果我使用查询“从X选择A,B”,那么该查询会比我删除C列并只是执行“选择”慢一些。 *来自X“

1 个答案:

答案 0 :(得分:3)

在单个表上选择所有行的查询的性能在很大程度上取决于I / O成本。 I / O成本又取决于查询读取的数据页数。

通常,增加一列会增加行的大小。较少的行适合较少的页面,因此查询可能会快一点。

现在警告。这里是一些:

  • 如果C是始终为NULL的varchar,则不会占用额外的空间。
  • 如果Cvarchar(max)(或很大),它可能存储在单独的数据页上。
  • 如果索引以(A, B)存在(以任一顺序),则查询应使用该索引。由于索引涵盖了查询,因此数据页的数量无关紧要。
  • SQL Server确实在I / O方面具有前瞻性,并且可以将I / O与其他处理交错。因此,您可能不会注意到读取数据页所花费的额外CPU时间。

我不会倾向于简单地删除列以加快此类查询的速度,除非不使用这些列。速度的增加(如果有的话)可能很小。但是在某些情况下,从性能的角度来看这是个好主意。