“select *”和所有列的选择之间是否存在速度差异?

时间:2012-09-26 05:37:59

标签: sql sql-server

  

可能重复:
  select * vs select column

假设有一个包含20列的表。 select *和明确包含所有20列的选择之间是否有任何速度差异?

如果没有差异,你会建议什么?我应该使用惰性select *还是应该为每列创建一个查询字符串?

(如果它有任何区别:我使用SQL Server。)

2 个答案:

答案 0 :(得分:1)

与速度无关,但可维护性......

如果您的应用程序专门请求列,并且表结构发生更改(列已删除或重命名),则语句将在运行时中断,从而准确指出问题所在。

select *在结构更改后仍然有效,但是稍后可能会在应用程序中导致更难以追踪的更微妙的问题。

这是前期的额外工作,但更好的可维护性以明确列出列。

假设where子句是参数化的,那么SQL只被解析一次,并且应该在语句缓存之后,执行速度不会太大。

答案 1 :(得分:0)

作为一种好的做法,最好在select语句本身中包含列名。因为表的结构将来可能会发生变化,所以你会提取不需要的数据..

表现明智

当你使用select *时,sql server编译器必须用列名替换*,这是一个额外的任务,但我认为这是微不足道的