SQL Server 中两种选择所有列的区别? [复制]
Posted
技术标签:
【中文标题】SQL Server 中两种选择所有列的区别? [复制]【英文标题】:Difference of two kind of Selecting all columns in SQL Server? [duplicate] 【发布时间】:2013-02-28 06:17:20 【问题描述】:这两个SQL查询除了代码长度有什么区别?
SELECT * from tblPerson
SELECT id, name age from tblPerson
注意:我在这里选择所有列,在第二个代码中,即表格的所有列,我没有选择特定位置。
【问题讨论】:
SELECT *
是一种快速但脏的选择方式。您可能会遇到意想不到和不愉快的惊喜,例如如果您团队中的其他人在您不知情的情况下将三个 XML
和 VARBINARY(MAX)
列添加到您的表中(并且您突然选择了比预期更多的数据)。 不要在生产代码中这样做 - 只是不要。
另见:Which is faster/best? SELECT * or SELECT column1, colum2, column3, etc
啊,好的,先生,谢谢您的建议 :)
【参考方案1】:
一个明显的区别确实是代码的长度。另一个区别是可维护性(不知道如何写那个词),即稍后向 'tblPerson' 添加一列会改变结果。
【讨论】:
是的,我已经对我的问题说过了,就可维护性而言,是的,没错【参考方案2】:没有区别。
SELECT *
表示您正在选择要在结果列表中显示的所有列。 SELECT col1, ...
仅指定要显示的列。
【讨论】:
尽管它们在功能上相同,但我认为查询计划存在一些细微差别。传统观念是尽可能使用列列表。 啊,即使我选择了一个20列的表,不使用星号,也没有区别吗?我的一些朋友说使用星号比选择所有不带星号更快。 @RoronoaZoro 不要相信你的朋友。相信优化器:D
啊,好的先生,谢谢你:)以上是关于SQL Server 中两种选择所有列的区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章