SQL查询 - 从视图中选择*或从视图中选择col1,col2,... colN

Nap*_*pco 11 sql sql-server

我们使用的是SQL Server 2005,但这个问题适用于任何RDBMS.

从视图中选择所有列时,以下哪项更有效?

Select * from view 
Run Code Online (Sandbox Code Playgroud)

要么

Select col1, col2, ..., colN from view
Run Code Online (Sandbox Code Playgroud)

dev*_*ord 37

永远,永远使用"SELECT*"!!!!

这是查询设计的基本规则!

这有多种原因.其中之一是,如果您的表上只有三个字段并且您在调用查询的代码中使用了所有三个字段,那么随着应用程序的增长,您很可能会在该表中添加更多字段,如果你的select*查询只是为了返回调用代码的那3个字段,然后你从数据库中提取的数据远远超过你需要的数量.

另一个原因是表现.在查询设计中,不要像这个口头禅那样考虑可重用性:

吃所有你可以吃,但吃所有你吃.

  • @Even Mien:这取决于实施.有些RDBMS知道如何在`EXISTS()`谓词中优化`SELECT*`,所以它甚至比`SELECT 1`更有效.了解usre的唯一方法是使用您的品牌和版本进行测试. (3认同)
  • SELECT 1很有趣! (2认同)

Gth*_*n83 11

最佳做法是按名称选择每列.将来,您的数据库架构可能会更改,以添加您不需要特定查询的列.我建议按名称选择每一列.