問題タブ [materialized]

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.

0 投票する
2 に答える
1223 参照

sql-server - OLTP のインデックス付きビュー?

私は SQL Server インデックス付きビュー (または Oracle マテリアライズド ビュー) に精通しており、OLAP アプリケーションでそれらを使用しています。それらには、既存のコードを変更することなく、実行計画を奪い、それをインデックス付きビューに再マップできるという非常に優れた機能があります。

すなわち。非常に高価な結合である SPROC があったとします。

SELECT [SOME COLUMNS]
FROM Table1 INNER JOIN Table2 [詳細]
INNER JOIN Table3 [BUNCH MORE JOINS] ...

同様の結果セットを保持するインデックス付きビューを作成した場合、クエリ オプティマイザーは、ベース テーブルではなくインデックス付きビューに SPROC を送信する可能性が非常に高く、パフォーマンスが大幅に向上します。

ここで、 OLTPでインデックス付きビューを使用したいとします!? つまり、ほとんどの OLTP (このサイトなど) は比較的読み取り負荷が高く、高価な結合がある場合は、それらを大幅に高速化し、ロックの競合を潜在的に減らすことができます ( http://www.codinghorror.com/blog/archives/001166.html)。さらに良いのは、コードを変更する必要がなく、インデックス付きビューを作成するだけです。

しかし、これは、これらのデータのコピーをインデックス付きビューに保持する必要があるため、データベースが大きくなることも意味します...

OLTP の競合や速度の問題を解決するために、インデックス付きビューを使用したことのある人はいますか? これが使用されているのを見たことがないのはなぜですか?

0 投票する
3 に答える
19426 参照

oracle - ORACLE : LEFT JOIN を使用するとマテリアライズド ビューが機能しない

2 つのテーブルの LEFT JOIN から MATERIALIZED VIEW を作成したいと考えています。ただし、次のエラーが発生します。

ORA-12054: マテリアライズド・ビューのON COMMITリフレッシュ属性を設定できません

ただし、次のように動作します。

なぜこれが起こっているのか、誰にも考えがありますか。

助けてくれてありがとう

0 投票する
1 に答える
22177 参照

oracle - ORACLE:マテリアライズドビュー-変更START WITH CLAUSE

次のコードを使用してマテリアライズドビューを作成しました。

ただし、このコードが実行された後、STARTWITH日付を変更できるようにしたいと思います。ALL_MVIEW_ *テーブルを調べていましたが、START_DATEの設定がどこにあるかが見つかりませんでした。

マテリアライズド・ビューのSTART_WITH日付を変更する方法を知っている人はいますか?

0 投票する
1 に答える
4691 参照

sql-server - T-SQL CTE マテリアライズ手法が SQL Server 2012 で機能しない

CTE を具体化し、ビューのパフォーマンスを向上させるには、次の手法を使用する必要があります。

さて、この方法はどちらも機能しません。誰かが同じ問題に直面したり、SQL Server 2012 でこれが有効でないかどうかを知っていますか?

0 投票する
2 に答える
2166 参照

oracle - 集約結合で高速リフレッシュを使用して Oracle マテリアライズド ビューを作成する

マテリアライズドビューを介して事前にいくつかの結合を実行することにより、高速化しようとしているこの非常に厄介なビューがあります。私の問題は、最も高価な結合であるため、事前に実行する価値が最も高く、具体化されたビューでうまく機能しないことです。

アプリケーションの目標は、可能な限り最新のデータを提供することです。そのため、マット ビューを作成する場合は、コミット時にすばやく更新する必要があります (おそらく、私が知らない他のアプローチは考えていません)。高速リフレッシュには制限があります。具体的には、ROWID が必要です。こちらのスレッドを参照してください。しかし、結合の性質上、正しいレコードを取得するには結合を集約する必要があるため、私の問題は少し異なります。

これが私が「事前実行」したいものです(または別の天才的な方法で最適化します):

0-*n*基本的に、エンティティに変更が加えられ、そのすべてが同じテーブルの後続の行で行われるため、これは自己結合です。特定のタイプの最新のものを選択しています。(他のタイプではこれを追加で行います)。上記を機能させるには、br と mr の両方の rowid を含める必要があります。w/ で集計する代わりにrank()andを検討しましたが、ロジックを正しく理解できません。ROWNUMMAX()

編集:オンデマンドで更新を行い、集計を完全に削除しても(正確に1行あると仮定して)、高速更新MVがカードに含まれているかどうかはわかりませんが、オラクルはクエリが複雑すぎて高速更新できないと言っています。だから、今、私は他のアイデアが必要です...

0 投票する
4 に答える
69203 参照

sql - マテリアライズド ビューの元のスクリプトを表示する方法は?

マテリアライズドビューをあるデータベースから別のデータベースに移動することに興味がありますが、列の1つも変更する必要があります。MV を構築する元のスクリプトを表示するにはどうすればよいですか? TOAD を実行していますが、元のスクリプトが見つからないようです。

前もって感謝します!

0 投票する
1 に答える
3209 参照

performance - Oracle 11g マテリアライズド ビューがハングする

事前に構築されたビューを使用して、Oracle 内に具体化されたビューを作成しようとしています。

このコマンドは実行されず、ハングします。おそらくこれは、ビューが適切に記述されていないことに関係していると思いました。そのため、ビューに対して次のクエリを実行しました。

このクエリの実行には約 6 分かかり、270 万が返されます。これは、ビューが問題ではないことを示していますが、間違っている可能性があります。

0 投票する
0 に答える
75 参照

oracle - Oracle - 同じテーブルに MV ログがある事前構築済みテーブルの MV

かなり大きなテーブル (6000 万) を持つ Oracle 11g OLTP データベースがあります。このテーブルを table_a と呼びます。Table_a には MV ログがあります (log_a)。テーブルは、事前構築済みのテーブル table_b で、高速更新を使用する MV を介して、読み取り専用のアドホック データベースに複製されます。これは非常にうまく機能します。

ただし、読み取り専用のアドホック データベースにのみアクセスできるサード パーティがいます。このサード パーティは、table_b をレプリケートする必要があります。

table_b で MV ログ (log_b) を作成できますが、log_a を使用して table_a から table_b を更新すると、log_b に table_b への変更が反映されないようです。

table_b の更新中に発生した変更を log_b に記録させる方法はありますか?