为什么在生产代码中使用SELECT *
被视为不良做法?
是否有在生产中使用的替代方法,或者我们是否需要单独选择表中的每一列?
答案 0 :(得分:3)
使用SELECT *
是一种不好的做法,原因有几个,至少在SSIS的背景下如此。
如果不需要所有列,选择所有列是浪费内存和内存是使SSIS快速运行(或不运行)的神奇之处。
如果您不需要所有列,则选择所有列将阻止SQL Server使用索引更快地返回您的数据。
SSIS是非常元数据驱动的。因此,如果您有SELECT *
作为源,如果将列添加到表中,则源定义已更改,并且您的包可能会失败,因为元数据不再一致。
答案 1 :(得分:0)
[*]有效地选择所有列。但是,由于选择所有列意味着获取大量数据,我会说只选择您真正需要的列更好。
例如,您可能不需要获取所有id列或时间戳或更新日期等。但您可能需要获取产品说明或客户名称。但即便如此,您可能也不需要每次都获取所有内容。
答案 2 :(得分:0)
如果您确实需要正在进行的数据库调用中的每一列,那么不会对性能产生影响。
如果您经常执行SELECT * ...
并且只使用一列或两列,那么这是重构SELECT
语句的位置,因为当您只对一个列感兴趣时它会返回所有列2。
在我看来,选择列名也可以更容易地阅读和修改现有的SQL。