复制表没有数据

时间:2013-05-28 17:56:37

标签: sql sql-server-2005 select query-performance

我正在创建一个临时表,部分基于另一个(非临时)表的结构。我只需要结构,而不是数据。在我的研究中,我找到了2个能够满足我需要的SELECT语句:

SELECT ID, Field1 FROM Table1 (NOLOCK) WHERE 0=1

SELECT TOP (0) ID, Field1 FROM Table1 (NOLOCK)

性能差异可能微不足道,但我想知道哪个SELECT效率更高?

由于

编辑1:我在Windows NT 6.1(Build 7601:Service Pack 1)上使用Microsoft SQL Server 2005 - 9.00.5057.00(X64)64位

编辑2:两个陈述的执行计划看起来完全一样,所以我猜测性能是否存在差异,可以忽略不计。

1 个答案:

答案 0 :(得分:1)

两个查询都会执行0 ms的常量扫描,因此您应该选择您和您的团队确定的更清晰和可读的任何一个。在某些情况下,性能不是最重要的因素,但应始终考虑可维护性。你应该用它来指导你的决定。

根据我个人的喜好,我会选择:

SELECT TOP (0) ID, Field1 FROM Table1 (NOLOCK)

可以找到展示此内容的sqlfiddle here