テーブルとviewについて

RIPosted by

テーブルとviewについてある例を用いて考えてみましょう。

今つくられた「userview」 は、viewで、以下の様にinsertで行を挿入した、「usertable」 は、テーブルです。

insert into usertable
	select  *
	from    usermoto
	where   phone like '%33%'

この二つのテーブルとviewは、テーブル「usermoto」から、同じselect文で つくられており、内容的には一致しています。なので、次の二つの検索は、同じ結果が出ます。

select *
	from   usertable              /* テーブルから検索 */
	where  phone like '-33-'

select * from userview /* view から検索 */ where phone like '-33-'

テーブル「usertable」の場合、元のテーブル「usermoto」と全く同じ データのコピーを、テーブルの中にかかえることになります。これは、ある意味で資源の ムダ遣いのに対して、一方、view「userview」の場合には、それ自身としては、データをかかえていません。ただ、システムは、このviewの定義を知っており、先ほどのviewからの検索の例では、システムは、このviewの定義に基づいて、この select文を、次のようなselect文に置き換えて、実行されます。

select *
	from   usermoto
	where  住所 like "%稚内%"
	  and  phone like '-33-'

Viewとテーブルで同じデータを持ったオブジェクトを作成する事ができますが、
それぞれメリットデメリットがあります。Viewは常に最新のデータが反映されるという
メリットがありますが、毎回計算が入るので速度が遅い。Tableに関しては、速度は速いが
最新のデータが常に反映されません。用途にもよるので、それぞれ最適な方法を
選択する必要があります。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA