【#PostgreSQL】マテリアライズドビュー,らしい...
関連記事
- 【#PostgreSQL】3ヶ月ぶりぐらいにSQLを眺めているが,判らん!!モルモルモル 【2024年07月25日(木)】
- 【#PostgreSQL】太古の昔から動いているシステムのレコード,手修正作業をするなど,と 【2023年10月06日(金)】
- 【#PostgreSQL】テーブルから取得したレコードセットをCSVへ落とそうとすると,空ファイルが出来る...ドロドロドロ 【2023年03月08日(水)】
- 仕事オワタ 昼寝しよ(GRB爆 【2023年02月23日(木)】
- 【#PostgreSQL】鬼のような4本のSQLを書き上げた 【2023年01月13日(金)】
謎な案件のデータベース構造
拡張するような話がチラホラと?
あちこちview書いているけど,今度の改造でフィールド数増えるし,結合テーブル増えまくるし?
これで速度が落ちそうな気が(微汗
クエリいじって解決しねぇ~かねぇ~と1週間ほど悩んでおったが
なんのことはない
マテリアライズドビュー
を使えばいいみたい
これを
CREATE VIEW testview AS SELECT master.mastermainkey, master.testcd, master.testname, data.datamainkey, data.datavalue FROM ( SELECT id AS mastermainkey, testcd, testname FROM mas_test WHERE activefl = true) master JOIN ( SELECT id AS datamainkey, masmainkey, datavalue FROM tbl_data WHERE activefl = true) data ON master.mastermainkey = data.masmainkey;これに変更
CREATE MATERIALIZED VIEW testview AS /*この行変更*/ SELECT master.mastermainkey, master.testcd, master.testname, data.datamainkey, data.datavalue FROM ( SELECT id AS mastermainkey, testcd, testname FROM mas_test WHERE activefl = true) master JOIN ( SELECT id AS datamainkey, masmainkey, datavalue FROM tbl_data WHERE activefl = true) data ON master.mastermainkey = data.masmainkey;
マテリアライズドビューは,テポラリテーブルを良きにはからって作ってくれて,
結果セットをこのテンポラリテーブルへ勝手にキャッシュするそうな
出力は,生テーブルをこねくり回して出力するんじゃなく,このテンポラリテーブルから出力されるとのこと
なんで,生テーブル側を更新しても,テンポラリテーブルは自動更新してくれないのは要注意
このテンポラリテーブルを最新情報に書き換えるには
refresh materialized view
コマンドを使わないといけないとのこと
↑の例なら
refresh materialized view testview;でキャッシュがリフレッシュされるぞー
refresh materialized view は少し重い命令だそうで(まぁ,そりゃそうだわな).テーブルロックがかかったり騒ぎになるかも?だそうで
軽く実行させるには「CONCURRENTLY」オプションをつけろじゃげな
refresh materialized view concurrently testview;うちのケースだと
80msぐらいかかってた巨大クエリが50msしかかからなくなった.
3割ぐらい速くなったかな?
これを元で実装計画を,ば?
コメント
今日は城主生誕記念日で日本国は祝日,らしい...
兵庫 城崎温泉 旅館で火事 ほぼ消し止められる
東海道新幹線 停電のため運転見合わせ 区間が拡大 原因調査中
【霧島山】新燃岳:活発化してた火山性地震,ピタッと止まった(25/4/26)
今日は落雷,ひょうに厳重警戒じゃげな(25/4/14)
中日本高速道路 ETCシステム障害 7都県 一部の専用レーン閉鎖(25/4/6)
iPhone米価格は相互関税で30─40%上昇か、上位機種は2300ドルも
【地震】大隅半島東方沖で地震:宮崎市などで震度4 津波の心配なし(25/4/3)