SELECT * - 优点/缺点

时间:2013-07-14 08:18:50

标签: sql select

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

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

那么使用'*'的利弊是什么? 感谢。

2 个答案:

答案 0 :(得分:13)

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

优点:

缺点:

  • 您返回的数据超出了您的需求。假设您添加一个VARBINARY列,每行包含200k。您只需要在单个记录的一个位置使用此数据 - 使用SELECT *您最终可以返回每10行的2MB
  • 明确说明使用了哪些数据
  • 指定列表示删除列时出错
  • 查询处理器必须做更多工作 - 找出表中存在哪些列(感谢@vinodadhikary
  • 您可以更轻松地找到使用列的位置
  • 如果您使用SELECT *
  • ,则会获得所有联接列
  • 您不能使用序数引用(尽管使用列的序数引用本身就是不好的做法)
  • 另请参阅:What is the reason not to use select *?
  • 的答案

答案 1 :(得分:5)

优点:

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

缺点:

  • 大多数情况下,您不需要所有列,只需要其中一些列。仅检索您想要的内容会更有效率
  • 您无法保证检索到的列的顺序(或者至少,查询中的顺序不明显),它禁止按索引访问列(仅按名称)。但名字也很明显
  • 当连接具有相同名称的潜在列的多个表时,您可以为这些列定义别名