回答:
ああ、あなたが考慮する必要がある多くの違いがあります
選択のためのビュー:
挿入/更新のビュー:
欠点
ビューは次のことができます。
また、ビューと一致するようにテーブルを設計しないでください。基本モデルは、データの効率的な保存と取得に関係する必要があります。ビューは、その複雑さを抽象化できるようにすることにより、効率的な正規化モデルから生じる複雑さを軽減するツールの一部です。
また、「テーブルよりもビューを使用する利点は何ですか?」と尋ねることは、優れた比較ではありません。テーブルなしで行くことはできませんが、ビューなしで行うことができます。それらはそれぞれ非常に異なる理由で存在します。テーブルは具体的なモデルであり、ビューは抽象化されたビューです。
複雑なロジックが毎回行われるようにする必要がある場合、ビューは許容されます。たとえば、すべての財務報告に必要な生データを作成するビューがあります。すべてのレポートでこのビューを使用することで、1つのレポートで1つの結合セットを使用し、別の結合で別の結果を生成するレポートを使用するのではなく、全員が同じデータセットから作業します。
ユーザーを特定のデータのサブセットに制限する場合は、ビューを使用できます。たとえば、レコードを削除せず、現在のレコードをアクティブとしてマークし、古いバージョンを非アクティブとしてマークするだけの場合、ビューを使用してアクティブなレコードのみを選択します。これにより、クエリにwhere句を入れるのを忘れて、悪い結果が出るのを防ぐことができます。
ビューを使用して、ユーザーがレコードのセットにのみアクセスできるようにすることができます。たとえば、特定のクライアントのテーブルのビューがあり、テーブルに対するセキュリティ権限がない場合、そのクライアントのユーザーはデータしか見ることができない可能性があります。そのクライアントのために。
ビューは、データベースをリファクタリングするときに非常に役立ちます。
ビューを使用してビューを呼び出す場合、ビューは受け入れられません。これにより、(少なくともSQL Serverでは)パフォーマンスが著しく低下する可能性があります。誰かがそのようにデータベースを抽象化することを選択し、パフォーマンスが恐ろしく、タイムアウトが頻繁に発生したため、数百万ドルのクライアントをほぼ失った。パフォーマンスの問題は完全に私たちのせいだったので、クライアントではなく修正の費用も支払わなければなりませんでした。ビューがビューを呼び出すとき、それらは基礎となるビューを完全に生成する必要があります。ユーザーが最終的に必要とする3つを確認するために、ビューと呼ばれるビューと呼ばれるビューと、何百万ものレコードが生成される場所で、これを確認しました。これらのビューの1つがレコードの単純なカウント(*)を行うのに8分かかったことを覚えています。ビューを呼び出すビューは非常に貧弱なアイデアです。
ビューは、通常、同じテーブルのフィールドしか更新できないため(これもSQL Serverであり、他のデータベースは異なる場合があります)、レコードの更新に使用することはよくありません。その場合は、とにかく直接テーブルを更新して、どのフィールドが利用可能かを把握する方が理にかなっています。
ビューを考慮せずにテーブルを設計する必要があります。
結合と条件の保存とは別に、ビューにはパフォーマンス上の利点があります。SQLServerはビューで実行プランを計算して保存するため、「オンザフライ」のSQLステートメントよりも高速になります。
ビューを使用すると、フィールドレベルでのユーザーアクセスに関する作業も容易になります。
まず、名前が示すように、ビューは不変です。これは、ビューがDBに保存されたクエリから作成された仮想テーブルに他ならないためです。このため、ビューにはいくつかの特性があります。
そのため、テーブルよりもビューの方が適しているという膨大な数のユースケースがあります。Webサイトでアクティブユーザーのみを表示することを考えてください。実際にDBにあるデータのサブセット(アクティブユーザーと非アクティブユーザー)のみを操作するため、ビューの方が良いでしょう。
これがお役に立てば幸いです。
ウィキペディアによると、
ビューは、基になるテーブルの外部への露出の程度を制限する可能性があります。特定のユーザーは、ビューをクエリする権限を持っている可能性がありますが、ベーステーブルの残りの部分へのアクセスは拒否されます。
ビューは、複数のテーブルを結合して単一の仮想テーブルに簡略化できます。
ビューは、データベースエンジンがデータ(合計、平均など)を集計し、計算結果をデータの一部として表示する、集計テーブルとして機能できます。
ビューはデータの複雑さを隠すことができます。たとえば、ビューはSales2000またはSales2001として表示され、実際の基になるテーブルを透過的に分割できます。
ビューの保存に必要なスペースはほとんどありません。データベースにはビューの定義のみが含まれ、ビューが提供するすべてのデータのコピーは含まれません。
使用するSQLエンジンに応じて、ビューは追加のセキュリティを提供できます。