最近業務を通じてRDBについて色々勉強したのでその内容をまとめました。
どなたかの参考になりましたら、幸いです😌
Viewとは?
viewの定義
ビューとは、クエリによって内容が定義される仮想テーブルです。 ビューは、テーブルと同様に、一連の名前の付いた列とデータ行で構成されます。 インデックスが設定されていないと、データベース内に保存された一連のデータ値としてビューが作成されることはありません。 データは、ビューを定義するクエリが参照するテーブルから取り出され、ビューの行と列はビューを参照したときに動的に作成されます。
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
viewを使うことのメリットとデメリット
一般的には下記のようなことが言えると思います。
メリット:
- 簡略化されたクエリの利用:
ビューはクエリを簡略化し、複雑な結合や条件を内部的に処理できます。これにより、データへのアクセスが容易になります。 - セキュリティの向上:ビューを使用すると、ユーザーに必要なデータのみを公開することができ、不要な情報へのアクセスを制限できます。セキュリティとアクセス制御の観点から有用です。
- データの抽象化:
ビューは基礎となるテーブルの構造を抽象化するため、データモデルの変更があってもビューの定義だけを変更すれば済みます。これにより、アプリケーションがデータ構造の変更に追従しやすくなります。 - 再利用性:
ビューは再利用可能なオブジェクトであるため、同じデータセットに対して異なるクエリを使用する必要がある場合や、複数のクエリで同じ結果を利用する場合に便利です。
デメリット:
- パフォーマンスの低下:
ビューが複雑なクエリや多くのテーブルを結合している場合、実行時に性能の低下が発生する可能性があります。 - 更新の制限:
特定の条件下では、ビューが更新対象として使用できないことがあります。たとえば、複数のテーブルを結合したビューは、一部の条件下では更新できません。 - 定義の変更が制限される:
一部のビューの定義を変更する場合、ビューを使用しているクエリやアプリケーションに影響を与える可能性があります。定義の変更が難しい場合があります。 - 実行計画の複雑化:
複雑なビューは、実行計画が複雑になり、最適なクエリの実行が難しくなることがあります。