生产使用SELECT *语句的性能?

时间:2013-08-09 15:19:09

标签: sql performance tsql ssis sql-server-2008-r2

为什么在生产代码中使用SELECT *被视为不良做法? 是否有在生产中使用的替代方法,或者我们是否需要单独选择表中的每一列?

3 个答案:

答案 0 :(得分:3)

使用SELECT *是一种不好的做法,原因有几个,至少在SSIS的背景下如此。

如果不需要所有列,选择所有列是浪费内存和内存是使SSIS快速运行(或不运行)的神奇之处。

如果您不需要所有列,则选择所有列将阻止SQL Server使用索引更快地返回您的数据。

SSIS是非常元数据驱动的。因此,如果您有SELECT *作为源,如果将列添加到表中,则源定义已更改,并且您的包可能会失败,因为元数据不再一致。

答案 1 :(得分:0)

[*]有效地选择所有列。但是,由于选择所有列意味着获取大量数据,我会说只选择您真正需要的列更好。

例如,您可能不需要获取所有id列或时间戳或更新日期等。但您可能需要获取产品说明或客户名称。但即便如此,您可能也不需要每次都获取所有内容。

答案 2 :(得分:0)

如果您确实需要正在进行的数据库调用中的每一列,那么不会对性能产生影响。

如果您经常执行SELECT * ...并且只使用一列或两列,那么这是重构SELECT语句的位置,因为当您只对一个列感兴趣时它会返回所有列2。

在我看来,选择列名也可以更容易地阅读和修改现有的SQL。