私は多くの場所を検索しましたが、それについて何も見つからないので、ここの誰かがVIEWとWITHの違いを教えてもらえますか?
私の考えでは、VIEWがスキーマオブジェクトとして保存されることを除いて、VIEWとWITHは同じですが、間違っている可能性があります
3 に答える
SQLビューとwith句は非常に似ています。ここにいくつかの違いがあります。
ビューは、関連するメタデータとセキュリティ機能を備えた実際のオブジェクトをデータベースに作成します。withステートメントは、単一のクエリの一部にすぎません。
多くのデータベースでは、ビューには、たとえば、インデックスを作成したり、ビューを「インスタンス化」したりするためのオプションがあります。
withステートメントは、一部のデータベースで再帰的なCTEを使用する機会を提供します。これはビューでは不可能です。
クエリに組み込まれた単純なサブクエリの場合、それらは非常に似ています。どちらを選択するかは、再利用可能なコード(ビュー)を作成するか、単一のクエリ(を使用)に焦点を合わせるかによって異なります。
基本的に、ビューの定義はデータベースに保存され、任意のクエリで再利用できますが、WITH句(または共通テーブル式、またはCTE)は1つの特定のクエリに関連付けられており、コピーによってのみ再利用できます。
それ以外の場合、それらは実質的に同じになります。
再帰的なWITH句を使用する場合、ビュー定義自体がWITH句(正当なもの)を使用しない限り、VIEWで同じ結果を達成することはできません。
WITH
簡単に言うと、はDMLで使用される句であり、はVIEW
データベースオブジェクトです。ビュー定義には、を使用するクエリが含まれる場合がありますWITH
。WITH
メインDMLの前に定義され、それ自体を参照する機能(再帰クエリ)を持つ派生テーブル(Microsoftの用語)またはインラインビュー(Oracleの場合)のバリエーションと見なすことができます。
WITH
SQLServerでは別のコンテキスト(クエリヒント)でも使用されます。