1

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

4

3 回答 3

3

由于某些原因,使用SELECT *是一种不好的做法,至少在 SSIS 的上下文中是这样。

选择所有列(如果您不需要所有列)会浪费内存,而内存是使 SSIS 快速运行(或不运行)的魔力。

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

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

于 2013-08-09T15:24:57.583 回答
0

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

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

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

于 2013-08-09T15:23:48.557 回答
0

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

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

于 2013-08-09T15:22:33.947 回答