« PHP:flock()関数 | メイン | PHP:link()関数 »

2006年12月06日

PostgreSQL:viewに関する考察

viewは使い方によってDBシステム構築の効率を上げるのは確かですが、一般的にtableから直接SELECTする場合よりもレスポンスが遅くなるため、ユーザー数が多い動的サイトでの使用には向いていません。

■ テストテーブル(店舗情報)
create table shopinfo(
    "shop_id" integer not null,
    "shop_name" varchar(100) not null,
    "auth" boolean not null,
    Constraint "shopinfo_pkey" Primary Key ("shop_id")
);

■ テストビュー
create view shoplist as
select
    shop_id,
    shop_name
from shopinfo
where auth='t'
END;

上記2つのようなテーブルとビューを作成してそれぞれに対してSELECT文を実行した場合、明らかにレスの早さに差があります。

SELECT * FROM shopinfo WHERE auth='t'  //速い

SELECT * FROM shoplist  //遅い

一般ユーザー向けサイト → viewは使用しない
管理者用管理画面 → viewを使用する

といった使い分けが無難といえそうです。

投稿者 wing : 2006年12月06日 00:03

コメント