2009-08-03 14 views
3

WITH句または共通テーブル式をUNION ALLステートメントで使用して、SQLサーバーのツリー構造のテーブルを繰り返す複数のクエリが記載されています(here)。 WITH句に含める代わりに同じVIEWを作成し、クエリを実行するたびに生成される場合、パフォーマンスに違いが見られますか?いくつかのクエリで使用されているため、ビューを実際に作成するのは一般的には良い方法でしょうか?共通テーブル式とCREATE VIEWのパフォーマンス

答えて

4

あなたが見ているのはCommon Table Expressionで、Viewではありません。 recursionを実行している場合は、CTEに固執し、ビューにロールしないでください。

MS SQLのビューでは、creating clustered indexesが表示されていない限り、パフォーマンス上の利点はありません。あなたの質問の音から、そうではありません。 stored procedureの中にCTEをカプセル化する方がよいでしょう。

+0

http://msdn.microsoft.com/en-us/library/ms190766.aspx 共通テーブル式は、私が現在使用しているWITH句のようです。実際のVIEWをCTEとCREATINGの間にパフォーマンスの違いはありますか? –

+1

いいえ、両方が同じクエリ実行計画を使用している限り、パフォーマンスの違いはありません。 –

+2

@Scott:複数の場所(機能、プロセスなど)で同じCTEが使用されている場合、同じコードのインスタンスを多数持つのではなく、ビューを作成することに同意しますか?それが索引付けされた(AKAマテリアライズされた)ビューではないと仮定します。 –

関連する問題