-2

可能重复:
选择 * 与选择列

假设有一个有 20 列的表。select *a和明确包含所有 20 列的 select之间是否存在速度差异?

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

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

4

2 回答 2

1

与其说是速度,不如说是可维护性......

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

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

这是额外的工作,但更好地显式列出列的可维护性。

假设where子句被参数化,SQL只解析一次,之后应该在语句缓存中,执行速度不会有太大差异。

于 2012-09-26T05:44:03.523 回答
0

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

表现明智

当您使用 select * 时,sql server 编译器必须将 * 替换为列名,这是一项额外的任务,但我认为可以忽略不计

于 2012-09-26T05:43:13.197 回答