私は基本的なSQLを使って2、3年前から作業しています。しかし、最近では "WITH"コマンドが出ています。私の研究から、 "WITH"は一時テーブルを作成する方法のようです。しかし私の経験上、ハッシュ「#」を使って一時テーブルを作成することもできます。T-SQLの一時データの比較#vs WITH
"WITH"と "#"を検索しようとしましたが、これらは奇妙な検索語なので、結果はあまり得られません。
誰かが賛否両論の違いは何ですか?
私は基本的なSQLを使って2、3年前から作業しています。しかし、最近では "WITH"コマンドが出ています。私の研究から、 "WITH"は一時テーブルを作成する方法のようです。しかし私の経験上、ハッシュ「#」を使って一時テーブルを作成することもできます。T-SQLの一時データの比較#vs WITH
"WITH"と "#"を検索しようとしましたが、これらは奇妙な検索語なので、結果はあまり得られません。
誰かが賛否両論の違いは何ですか?
WITH
を使用して共通テーブル式(CTE)を作成します。これは技術的には一時テーブルではありません。
一時テーブルは他のテーブルと同様ですが、接続が閉じられるとtempdb
に格納され、破棄されます。
ただし、一時テーブルとは異なり、CTEには実際に物理ストアがありません。それはもっと "ビュー"のようです。
Here is a great article on exactly what CTEs are。そして、接続用の持続一時テーブルとは異なり、CTEは次のとおりです。DELETE、
単一のSELECT、INSERT、UPDATEの実行範囲内で定義された、またはCREATE VIEWステートメント
WITH
はオンザフライで(メモリ上に)作成されたテーブルなので、他のテーブルと同じように一時的な(#)テーブルよりもはるかに高速ですが、接続を閉じると自動的に削除されます。それは1つのステートメントに対してのみ生きているということです。