15

私は多くの場所を検索しましたが、それについて何も見つからないので、ここの誰かがVIEWとWITHの違いを教えてもらえますか?
私の考えでは、VIEWがスキーマオブジェクトとして保存されることを除いて、VIEWとWITHは同じですが、間違っている可能性があります

4

3 に答える 3

16

SQLビューとwith句は非常に似ています。ここにいくつかの違いがあります。

ビューは、関連するメタデータとセキュリティ機能を備えた実際のオブジェクトをデータベースに作成します。withステートメントは、単一のクエリの一部にすぎません。

多くのデータベースでは、ビューには、たとえば、インデックスを作成したり、ビューを「インスタンス化」したりするためのオプションがあります。

withステートメントは、一部のデータベースで再帰的なCTEを使用する機会を提供します。これはビューでは不可能です。

クエリに組み込まれた単純なサブクエリの場合、それらは非常に似ています。どちらを選択するかは、再利用可能なコード(ビュー)を作成するか、単一のクエリ(を使用)に焦点を合わせるかによって異なります。

于 2012-05-20T15:47:41.010 に答える
5

基本的に、ビューの定義はデータベースに保存され、任意のクエリで再利用できますが、WITH句(または共通テーブル式、またはCTE)は1つの特定のクエリに関連付けられており、コピーによってのみ再利用できます。

それ以外の場合、それらは実質的に同じになります。

再帰的なWITH句を使用する場合、ビュー定義自体がWITH句(正当なもの)を使用しない限り、VIEWで同じ結果を達成することはできません。

于 2012-05-20T15:45:23.830 に答える
1

WITH簡単に言うと、はDMLで使用される句であり、はVIEWデータベースオブジェクトです。ビュー定義には、を使用するクエリが含まれる場合がありますWITHWITHメインDMLの前に定義され、それ自体を参照する機能(再帰クエリ)を持つ派生テーブル(Microsoftの用語)またはインラインビュー(Oracleの場合)のバリエーションと見なすことができます。

WITHSQLServerでは別のコンテキスト(クエリヒント)でも使用されます。

于 2012-05-20T15:43:44.673 に答える