【#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割ぐらい速くなったかな?
これを元で実装計画を,ば?
コメント
土砂降りの中,温泉だけ行ってきた!「北郷温泉」
【台風】熱帯低気圧が発達して再び台風8号(コメイ)に 7年ぶりの「復活台風」
【連休】連休なのであっちこっち回ってきた
参院選きょう投票 与野党どちらが過半数制するか 最大の焦点に(25/7/20)
【#南海トラフ地震】地震前「ゆっくり滑り」間隔半減 日向灘で初観測、予測へ成果
うむ,猛烈にダルい.完全に体調がおかしい
まぁ降るもんじゃ.強雨がずっと続いているぞー
【新燃岳】噴煙がめちゃくちゃ少なくなってる.いったん終わる方向じゃろか?(25/7/5)
【地震速報】鹿児島 悪石島で震度6弱 津波の心配なし(25/7/3)