在SQL中使用*真的很糟糕吗?

时间:2010-09-07 15:10:23

标签: sql sql-server performance

  

可能重复:
  SQL: Using Select *

大家好!

我想知道在SQL Server中使用存储过程中的*符号是不是一个坏主意? 写的真的好多了

SELECT
 NAME,
 AGE,
 OTHER_STUFFS

FROM
 TABLE

大于

SELECT * FROM TABLE

肯定表中只有3列。对于表演来说,列举每一列更好吗? 坦克寻求帮助..

4 个答案:

答案 0 :(得分:2)

虽然您现在可能正在使用所有列,但可能(甚至可能)该表将来会添加列。当发生这种情况时,您将选择额外的数据,并根据您的操作,这可能会导致问题。

从重复的帖子Which is faster/best? SELECT * or SELECT column1, colum2, column3, etc中被盗:

  

你可能愿意将此视为   一个小的成本,但意识到列   您不需要的仍然是:

     
      
  1. 从数据库中读取
  2.   
  3. 通过网络发送
  4.   
  5. 编入您的流程
  6.   
  7. (适用于ADO类型技术)保存在内存中的数据表中
  8.   
  9. 忽略并丢弃/垃圾收集
  10.   

答案 1 :(得分:0)

我会说,当你按照

的方式做某事时,这只会很糟糕
insert into Table1
select * from Table2

因为如果有人向Table2或类似的东西添加了一个列。

如何在select语句中指定必要的列并不重要,它不会影响性能。

答案 2 :(得分:0)

如果您确实列出了表格中的每一列,那么性能应该是等效的。

问题是,当您稍后向该表添加更多列时,它们将被存储过程选中并且不会被使用,除非您在每次更改表后返回并更新所有过程(我没有)。

答案 3 :(得分:-7)

使用 SELECT * 而不是选择所有列根本没有区别。实际上, SELECT * 可能会快一点,因为必须将更少的字节发送到服务器才能执行命令。