問題タブ [materialized-views]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
oracle - Oracle - LEFT JOINS の更新が非常に遅い FAST REFRESH マテリアライズド ビュー
更新に非常に長い時間がかかる LEFT JOIN を含むマテリアライズド ビューが Oracle にあります。基になるテーブルを更新すると、実行に 63914.765 秒かかります (はい、ほぼ 17 時間です)。
データを行から列にピボットしたいので、同じテーブルで LEFT JOIN を使用しています。この Oracle バージョンではピボット コマンドを使用できません。FAST REFRESH マテリアライズド ビューでは、GROUP BY + CASE を使用できません。
マテリアライズド ビュー ログは次のようになります。
マテリアライズド ビュー自体は次のようになります (700000 行が含まれ、Programmes_Titles テーブルには 900000 行が含まれます)。
私が使用する UPDATE ステートメントは次のとおりです。
この UPDATE ステートメントには 17 時間かかります。INNER JOIN ((+) を削除) を使用すると、数ミリ秒かかります。
また、Mv_Web_Programmes マテリアライズド ビューに INDEXES を追加しようとしましたが、それも役に立たないようです。(それはまだ 1 分以上実行されますが、これは遅い方法です。変更のたびに 17 時間待っているわけではないので、UPDATE が改善される可能性があります)
だから私の質問は: 基になるテーブルを更新するのになぜそんなに時間がかかるのですか? どうすればこれを改善できますか?
sql - マテリアライズド ビュー - オラクル
リフレッシュ時間を変更したいマテリアライズドビューがあります:
この中で知りたいことがいくつかあります。
- NEXT SYSDATE +1 は何を表しているか (どのように変更するか)
- DISABLE QUERY REWRITEとは
つまり、具体化されたビューに関して、DISABLE QUERY REWRITEとENABLE QUERY REWRITEの比較です。
oracle - Oracle-マテリアライズドビューの作成
私はいくつかの記事を読んでいますが、スタック上のいくつかの回答も読んでいますが、まだいくつかの問題があります。可能な分析のためにMVコードを投稿します。
エラーは次のとおりです。
私は何かを忘れていますか?私が欲しいのは、毎月MVの更新を開始することだけです。誰かが助けることができますか?
ありがとう!
php - 一部のソース データが削除された後、集計テーブルの更新を維持する方法
見栄えの良い具体化されたビューに出くわしました: http://en.oreilly.com/mysql2011/public/schedule/detail/17146
ただし、「詳細」データが多すぎて、毎日の終わりに削除せざるを得なくなります... フレックスビューなどを利用して集計ロジックを処理する方法はありますか?
コンテキストとして、このスクリプトはページ ビューをログに記録し (その数が多すぎて、すべての詳細を無期限に保存することはできません)、要約テーブルを作成して、長期的なレポートの質問に答えようとしています。
oracle - Oracleのマテリアライズドビューの更新
月に1回更新されるテーブルにマテリアライズドビュー(MV)を作成しました。MVを自動更新する方法はありますか... MVの更新は手動で行うか、自動で行うことができますか。行う????トリガーを使用できますか..??
PL/SQL開発者でOracle9iを使用していますありがとうございます
oracle - Oracle マテリアライズド ビュー ログ
10 個の列がtable T
あり、そのうちの 3 つだけでマテリアライズド ビュー ログを作成し、それら 3 つのマテリアライズド ビューを作成した場合、テーブル内の任意の列 (ログ内の列以外) を更新すると、レコードが挿入されるのはMLOG$_T
なぜですか? 回避する方法はありますか?
ありがとう
oracle - Oracleの更新により、テーブルが見つからないという例外がスローされます
簡単な更新スクリプトがある:
オラクルは次のように主張しています。
質問:何が欠けていますか?
ノート:
- 更新されたMVは存在します
- スキーマが指定されていない場合、結果は同じです
oracle - MAX() を使用してコミット マテリアライズド ビューで更新可能
entity-attribute-value antipatternに大きな打撃を受けています。何年も前のある日、ある男が DDL は魅力的ではないと判断し、人々に関する情報を保持するために「十分に柔軟な」ものを開発したいと考えました。彼は、人々が名前、生年月日などの少なくともいくつかの基本的な属性を持っているという事実を無視しました. それだけでなく、彼はそのスキーマの上に一連の (副作用の多い) PL/SQL パッケージを配置しました。このことは、他のアプリケーションが依存する重要なサブシステムになりました。
数年と 2000 万行を早送りします。その男はもう会社にいないので、私はこれに対処しなければなりません。いくつかの基本的な検索を実装する必要がありますが、現在は複数の内部結合が必要であり、場合によっては永遠に時間がかかります。すべてを書き直すことは不可能なので、最も重要な属性を「ピボット」したいと考えています。
具体化されたビューは実行可能な代替手段になる可能性があると思いましたが、私はそれらを使用したことがないので、いくつかのガイダンスが必要です. 次のようなテーブルを取得したいと思います。
Oracleドキュメントを読んで理解しているので、クエリに where 句がない場合、 MAX() を使用して「REFRESHABLE ON COMMIT」マテリアライズドビューを作成できるはずです。
しかし、それを機能させることはできません。私はもう試した:
挿入には機能しますが、更新には機能しません。これらのことができることがわかります:
しかし、REFRESH_FAST_AFTER_ONETAB_DML も表示する必要があると思います。何か案は?
更新: dbms_mview.explain_mview の出力
oracle - Oracle でマテリアライズド ビューの高速更新によって行われた変更をクエリする方法はありますか?
DB_A と DB_B という 2 つの Oracle データベースがあるとします。マテリアライズド ビュー ログを含む DB_A には TAB1 という名前のテーブルがあり、DB_B には SNAP_TAB1 という名前のマテリアライズド ビューが作成されています。
マテリアライズド ビューを高速リフレッシュするたびに SNAP_TAB1 に加えられた変更を DB_B でクエリする方法はありますか?
DB_Aでは、リフレッシュの前に、マテリアライズド・ビュー・ログ表MLOG$_TAB1を問い合せて、TAB1で変更された行を確認できます。SNAP_TAB1 で更新された行を更新するたびに、DB_B でクエリを実行する方法を探しています。
ありがとう!