【发布时间】:2013-01-21 17:58:23
【问题描述】:
我刚刚和我的一位同事讨论了在存储过程中指定查询命令时的 SQL Server 性能。
所以我想知道哪个比另一个更受欢迎,以及背后的具体原因是什么。
假设,我们确实有一张名为
员工(EmpName,EmpAddress)
我们想从表中选择所有记录。所以我们可以用两种方式编写查询,
从员工中选择 *
从员工中选择 EmpName、EmpAddress
所以我想知道上述查询中是否存在任何特定差异或性能问题,或者它们是否与 SQL Server 引擎相同。
更新:
- 可以说表架构不会再改变了。所以以后的维护没有意义。
- 性能方面,可以说,使用率非常高,即数据库服务器上每秒数百万次点击。我希望对这两种方法都有一个清晰准确的性能评级。
- 不对整个表进行索引。
【问题讨论】:
-
在你
altertable之前它们是平等的。 -
您的表上没有索引,您担心 select * 与 select col1,col2 的性能?我认为你需要考虑你的优先事项。
-
伙计们,只有在没有其他列并且没有更窄的覆盖索引时它们才相等。
-
让我换一种说法:SELECT * 永远不会比命名列更有效。帮自己一个忙,即使表现相同,也不要偷懒。
-
@Manish 因为您只需键入一次代码。当你这样做时,你应该验证它的准确性,与消费应用程序建立一个适当的接口(你不能只在 C# 中使用 *,例如,在显示数据时)等等。你不应该依赖这种情况下的性能相似,因为在地球上几乎所有其他情况下都不会出现这种情况(有多少表永远不会改变?有多少表没有索引?)。再一次,您完全专注于效率的错误方面。
标签: sql sql-server performance select benchmarking