2013-05-28 38 views
0

我正在根據另一個(非臨時)表的結構部分創建臨時表。我只需要結構,而不是數據。在我的研究,我發現2條SELECT語句,做什麼,我需要:無數據複製表

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

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

的性能差異可能是微不足道的,但我想知道這是選擇更有效?

感謝

編輯1:我使用Microsoft SQL Server 2005 - 9.00.5057.00(X64)在Windows NT 6.1的64位(7601建設:服務包1)

編輯2:執行計劃對於這兩個語句看起來完全一樣,所以我猜測性能是否有差異,這是可以忽略的。

+2

你看過執行計劃嗎?如果你對性能感到好奇,通常是最好的開始。 –

+0

這是使用MS SQL Server嗎?如果是這樣,什麼版本?如果不是,那麼RDBMS是什麼? –

+0

@ Abe Miessler我應該在執行計劃中看到什麼aspec(s)?我不是一位SQL專家(按照我的編程自行學習) – George

回答

1

這兩個查詢都會進行恆定掃描,因此您應該選擇您和您的團隊確定哪個更清晰可讀。在某些情況下,性能不是最重要的因素,但應始終考慮可維護性。你應該用這個來指導你的決定。

基於我個人的喜好,我會去的:

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

,演示了這種情況的sqlfiddle可以發現here

+0

我們的數據庫有數百萬條記錄,所以對我們來說,優先事項#1是性能。既然在這種情況下的表現不是問題,我同意你在'TOP(0)'上 - 我更喜歡'0 = 1'方法。 – George