2011-04-25 76 views
1

我有一个现有的存储过程,从表中选择一组25列执行操作A.我正在写另一个动作B处,从该表只需要3列。我需要的三个列中只有一列是在索引中。因此,我不认为会有行动A和行动B(纠正我,如果我错了),如果我有另一查询,只是取了三列的查询的执行时间的任何显著差异。但我担心如果我重用行动A.我应该写另一个存储过程使用相同的存储过程只是为了找回我需要的纠正措施B的列,被在网络上传输的数据包的大小?通过网络传输的列数是否重要?

回答

2

是的!

很明显,如果不知道涉及的列的大小,调用过程的频率以及网络的速度,网络问题本身无关紧要,但仅仅是一种好的做法将不需要的列(或行)返回给客户端。 (Interesting blog post on this issue

这也将允许你的3列查询以潜在地使用更窄的覆盖索引在未来以减少查询的IO要求。

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