質問

次のSQL(SQL Server 2008)ステートメントを検討してください。

WITH MyResult AS
(
  SELECT 
    Name,
    Row_ID AS ORD
  FROM Person Where Gender = @Gender
)
SELECT *
FROM MyResult
WHERE ORD > 5

myResultはtempdbの一時テーブルに保存されていますか?それとも何か他のことをしますか?

私たちはいくつかのクエリを最適化しており、パフォーマンスなどを測定するために(内部的に)ステートメントでよりよく理解するようになります。

ありがとう

役に立ちましたか?

解決

いいえ、次のように このMSDNの記事

... CTEは言語レベルの構成要素です。つまり、SQL Serverが温度または仮想テーブルを内部的に作成しないことを意味します...

そしてまた、 ここで述べたように:

共通のテーブル式(CTE)は、ビューステートメントの1つ、挿入、更新、削除、または作成の単一の選択範囲内で定義される一時的な結果セットと考えることができます。 CTEは、オブジェクトとして保存されておらず、クエリの期間のみ持続するという点で派生テーブルに似ています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top