MySQLでビューを活用する 

データベース データベース関連
この記事は約2分で読めます。

はじめに

MySQLでビューを使用する機会がありましたので、覚え書きを残しておきます。

ビューとは

ビューとは、SELECT 文で定義される仮想のテーブルのことで、実際にはテーブルは存在しないのですが、あたかも存在するかのようにSELECT文などを使ってデータを取得できる、仮想的なテーブルを定義する機能です。説明ではなかなか理解が難しいですね。
AというテーブルとBというテーブルをくっつけて、Cという仮想テーブルを作成するというイメージです。

以下のサンプルは、製品テーブル、カテゴリテーブル、検索ワードテーブルという3つのテーブルを結合して、新たにtmpproductsというビューテーブルを作成するサンプルです。

CREATE OR REPLACE VIEW `tmpproducts` AS SELECT p.`products_id`, p.`name1`, p.`name2`, p.`comment_detail`, c.`category_name`, k.`keywordtext`, p.`viewno`
									FROM `products` AS p
									LEFT JOIN `keyword` AS k on(p.`products_id` = k.`products_id`)
									LEFT JOIN `category` AS c on(p.`category_id` = c.`category_id`)
									WHERE p.`viewflg`= 0 ORDER BY `viewno`

こうすると何が嬉しいかというと、事前にビューテーブルが存在していることで、毎回複雑なサブクエリの問い合わせをする必要がないということです。
サーバーへの負荷軽減と、検索結果の速度アップに貢献します。
ビューテーブルは仮想テーブルですので、実体としては存在していないテーブルですが、SELECT分を使って問い合わせできます。
検索速度が遅い場合に、ビューを使用してみてはいかがでしょうか。

ビューの削除は以下で簡単に実行できます。

drop view tmpproducts;