PostgreSQLでマテリアイズドビューを使用することになったのでその際に調査した結果をメモ。
■構文
1 |
CREATE MATERIALIZED VIEW ビュー名 as select * from テーブル名; |
例えば、
コンテンツを管理するテーブル「tbl_contents」
カラムはシンプルに ID、TITLE
コンテンツ毎のいいねを管理するテーブル「tbl_nice」
カラムはシンプルにID、CONTENSTS_ID
のようなテーブルがあるとします。
その際に、ランキング用のマテビューを作成した場合は
1 2 3 4 5 6 7 8 9 |
CREATE MATERIALIZED VIEW ビュー名 as select count(*) as count ,tbl_contents.TITLE as title ,rank() OVER (ORDER BY count(*)) as rank from tbl_nice LEFT JOIN tbl_contents on tbl_contents.ID = tbl_nice.CONTENSTS_ID GROUP BY tbl_contents.TITLE ORDER BY count; |
っていうマテビューを作成してあげるとランキング用のマテビューが作成できます。
で、作成したマテビューをSELECTしてみると、結果のイメージはこんな感じになるはずです。
10, コンテンツ1, 1
9, コンテンツ2, 2
9, コンテンツ3, 2
3, コンテンツ0, 4
Comments are closed