「ビュー」は、実際の開発現場で非常に多く使われているデータベースの技術です。
メリット、デメリットを知り、設計時にビューを活用するかどうか判断できるようにしましょう!
ビューとは?
SQLを実行する観点で見れば、「テーブルと同じもの」です。
ビューの使い方
構文
CREATE VIEW ビュー名 AS SELECT文
例
ユーザーマスターから、中年社員を抽出したビューを作る場合
CREATE VIEW TYUNEN AS SELECT * FROM USER_MASTER WHERE AGE > '35' AND AGE < '50'
ビューのメリット
SQLがシンプルになる点
例えば、上記の例で言えば、中年社員の方の給料を一覧化する場合と、中年社員の方の部署をグループ化する場合があったとしたら、それぞれわかりやすくなります。
ビューを使う前
それぞれ、SELECT文での集計の仕方が違う場合は、以下のように冗長になってしまいます。
SELECT SALARY FROM TYUNEN WHERE AGE > '35' AND AGE < '50'; //SQL1 SELECT DEPARTMENT FROM USER_MASTER WHERE AGE > '35' AND AGE < '50' GROUP BY DEPARTMENT;//SQL2
ビューを使って書く場合
それぞれ、非常にSQLがすっきりしましたね。
SELECT SALARY FROM TYUNEN; //SQL1 SELECT DEPARTMENT FROM TYUNEN GROUP BY DEPARTMENT;//SQL2
他には、良く使う「結合済みのテーブル」なんかを、ビューとして定義しておくと非常に便利かもしれません。
アクセス権限を割り振ることができる点
「ありのままのテーブルA」、「テーブルAから、機密情報を除いたビューB」というように、それぞれ作っておき、利用者の権限に応じて、どちらを使うか振り乾けることができます。
ビューのデメリット
想像以上に複雑なSQLになっていることも…。
ビューは、あくまで、SELECT文に名前をつけただけのものに過ぎません。
なので、SQLがシンプルになりわするが、SQLの実行速度自体が早くなることはないのです。
安易に、ビューで簡素化されたから、少し複雑なSQLを書いてやろうと思うと、思ったよりパフォーマンスが悪くなることがあるので、気をつけましょう!
ビューの注意点
ビューでORDER BY句は使えないです。
ビューではOREDER BY句を使うことができません。
なぜなら、ビューには「行に順序という概念がない」ためです。中には、ビューにORDER BY句を許すRDBMSもありますが、基本的には許されていないので使用しないでおきましょう。
ビューは、特定条件で更新が可能です。
ビューは基本的に、直接更新することが許されないです。
しかし、下記の条件を満たせば更新することが可能です。
- SELECT句にDISTINCTキーワードが含まれていない場合
- FROM句に含まれるテーブルが一つだけの場合
- 「GROUP BY句」、「HAVING句」をそれぞれ使用していない場合
「マテリアライズド」・ビューとは?
SELECT文の実行結果をキャッシュしているテーブルのようなもので、データを直接もっており、インデックスも使えるので「性能のよいビュー」というイメージです。
性能重視である場合は、こちらの利用も検討されてもよいかもしれません。
※一部のDBMSで利用可能な機能になるので、実務で避けられる傾向にあります。あまりお目にかかる機会はないかもしれません。
この記事へのコメントはありません。