【问题标题】:Difference of two kind of Selecting all columns in SQL Server? [duplicate]SQL Server 中两种选择所有列的区别? [复制]
【发布时间】:2013-02-28 06:17:20
【问题描述】:

这两个SQL查询除了代码长度有什么区别?

SELECT * from tblPerson

SELECT id, name age from tblPerson

注意:我在这里选择所有列,在第二个代码中,即表格的所有列,我没有选择特定位置。

【问题讨论】:

  • SELECT * 是一种快速但的选择方式。您可能会遇到意想不到和不愉快的惊喜,例如如果您团队中的其他人在您不知情的情况下将三个 XMLVARBINARY(MAX) 列添加到您的表中(并且您突然选择了比预期更多的数据)。 不要在生产代码中这样做 - 只是不要。
  • 啊,好的,先生,谢谢您的建议 :)

标签: sql-server select


【解决方案1】:

一个明显的区别确实是代码的长度。另一个区别是可维护性(不知道如何写那个词),即稍后向 'tblPerson' 添加一列会改变结果。

【讨论】:

  • 是的,我已经对我的问题说过了,就可维护性而言,是的,没错
【解决方案2】:

没有区别。

SELECT * 表示您正在选择要在结果列表中显示的所有列。
SELECT col1, ... 仅指定要显示的列。

【讨论】:

  • 尽管它们在功能上相同,但我认为查询计划存在一些细微差别。传统观念是尽可能使用列列表。
  • 啊,即使我选择了一个20列的表,不使用星号,也没有区别吗?我的一些朋友说使用星号比选择所有不带星号更快。
  • @RoronoaZoro 不要相信你的朋友。相信优化器:D
  • 啊,好的先生,谢谢你:)
猜你喜欢
  • 1970-01-01
  • 2012-08-05
  • 2014-08-24
  • 1970-01-01
  • 1970-01-01
  • 2019-07-01
  • 2012-05-25
  • 1970-01-01
相关资源
最近更新 更多