通过网络传输的列数是否重要?

时间:2011-04-25 10:15:43

标签: sql sql-server

我有一个现有的存储过程,从表中选择一组25列来执行Action A.我正在编写另一个动作B,它只需要表中的3列。我需要的三个列中只有一列在索引中。因此,如果我有另一个只提取三列的查询,那么我认为Action A和Action B之间的查询执行时间没有任何显着差异(如果我错了,请纠正我)。但是如果我重用Action A使用的相同sproc,我会担心通过网络传输的数据包的大小。我应该编写另一个存储过程来检索Action B所需的列吗?

1 个答案:

答案 0 :(得分:2)

是的!

显然,如果不知道所涉及的列的大小,调用过程的频率以及网络的速度,就不可能说出网络问题本身真正重要的程度,但是不返回是一个好习惯客户端不需要的列(或行)。 (Interesting blog post on this issue

这也将允许您的3列查询在将来可能使用更窄的覆盖索引来减少查询的IO要求。

仅选择所需的列还将允许缺少索引DMV和DTA等工具根据您的实际工作负载要求提出适当的建议,并且可以减少查询的内存需求,因为您传递的数据较少(特别是如果您在计划中有任何种类)