【#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割ぐらい速くなったかな?
これを元で実装計画を,ば?
コメント
【地震】日向灘でM4.4の地震
【#第三次世界大戦】ウクライナ空軍 “ICBM1発がロシア南部から発射された”
司法省 “グーグルはクローム売却を” 裁判所に要求へ 米報道
最近,仕事がずっと激しい...ドロドロドロ
今日は謎の宴会らしい...スーツが入るのかっ!?(GRB爆
「侍ジャパン」宮崎県入り 「プレミア12」向け きょうから合宿
【#総選挙】 衆議院選挙 きょう投票 ...ドロドロドロ(24/10/27)
【#線状降水帯】宮崎 延岡「土砂崩れで家がつぶれている」通報 1人不明(24/10/23)
【冬】お~日本海に筋雲が出ちょる!冬がキター
【#寒冷前線】13時頃30℃の気温が今は25℃無いぞー