6

我总是从 SQL 专家那里听到,在 SELECT 语句中使用“*”符号效率不高,最好列出所有字段名称。

但是在向表中添加新字段然后相应地更新所有存储过程时,我个人认为它并不有效。

那么使用 '*' 的优缺点是什么?
谢谢。

4

2 回答 2

13

一般来说,使用SELECT *不是一个好主意。

优点:

缺点:

  • 您返回的数据超出了您的需要。假设您添加了VARBINARY每行包含 200k 的列。您只需要在一个地方为一条记录使用此数据 - 使用SELECT *您最终可以返回每 10 行不需要的 2MB
  • 明确使用什么数据
  • 指定列意味着删除列时会出错
  • 查询处理器必须做更多的工作 - 找出表上存在哪些列(感谢@vinodadhikary
  • 您可以更轻松地找到使用列的位置
  • 如果您使用,您将获得连接中的所有列SELECT *
  • 您不能使用序号引用(尽管对列使用序号引用本身就是不好的做法)
  • 另请参阅以下答案:不使用 select * 的原因是什么?
于 2013-07-14T08:22:17.633 回答
5

优点:

  • 当你真的需要所有的列时,写起来会更短select *

缺点:

  • 大多数时候,您不需要所有的列,而只需要其中的一些。只检索你想要的更有效
  • 您无法保证检索到的列的顺序(或者至少,查询中的顺序并不明显),它禁止按索引(仅按名称)访问列。但名字也远非显而易见
  • 当连接多个可能具有相同名称列的表时,您可以为这些列定义别名
于 2013-07-14T08:24:33.400 回答