2012-02-15 6 views
5

私は基本的なSQLを使って2、3年前から作業しています。しかし、最近では "WITH"コマンドが出ています。私の研究から、 "WITH"は一時テーブルを作成する方法のようです。しかし私の経験上、ハッシュ「#」を使って一時テーブルを作成することもできます。T-SQLの一時データの比較#vs WITH

"WITH"と "#"を検索しようとしましたが、これらは奇妙な検索語なので、結果はあまり得られません。

誰かが賛否両論の違いは何ですか?

答えて

4

WITHを使用して共通テーブル式(CTE)を作成します。これは技術的には一時テーブルではありません。

一時テーブルは他のテーブルと同様ですが、接続が閉じられるとtempdbに格納され、破棄されます。

ただし、一時テーブルとは異なり、CTEには実際に物理ストアがありません。それはもっと "ビュー"のようです。

Here is a great article on exactly what CTEs are。そして、接続用の持続一時テーブルとは異なり、CTEは次のとおりです。DELETE、

単一のSELECT、INSERT、UPDATEの実行範囲内で定義された

、またはCREATE VIEWステートメント

MSDN Reference on Using Common Table Expressions

0

WITHはオンザフライで(メモリ上に)作成されたテーブルなので、他のテーブルと同じように一時的な(#)テーブルよりもはるかに高速ですが、接続を閉じると自動的に削除されます。それは1つのステートメントに対してのみ生きているということです。