タグ付けされた質問 「materialized-view」

ビューのように定義されますが、テーブルのような永続的なデータを保持するマテリアライズドビューは、Oracle、DB2、postgresを含む多くのRDBMSの機能です。SQL Serverには、インデックス付きビューと呼ばれる同様の機能があり、このタグの下に十分にあると見なされています。

1
異なるテーブルからORDER BYを使用してTOP 1を選択するときにインデックス付きビューを設定する方法
次のシナリオでインデックス付きビューを設定して、2つのクラスター化インデックススキャンなしで次のクエリが実行されるようにしています。このクエリのインデックスビューを作成して使用するときはいつでも、私が付けたインデックスはすべて無視されるようです。 -- +++ THE QUERY THAT I WANT TO IMPROVE PERFORMANCE-WISE +++ SELECT TOP 1 * FROM dbo.TB_test1 t1 INNER JOIN dbo.TB_test2 t2 ON t1.PK_ID1 = t2.FK_ID1 ORDER BY t1.somethingelse1 ,t2.somethingelse2; GO テーブルの設定は次のとおりです。 2つのテーブル 上記のクエリによる内部結合で結合されている 上記のクエリでは、最初の列から、次に2番目のテーブルの列の順になっています。TOP 1のみが選択されています (以下のスクリプトには、問題の再現に役立つ場合に備えて、テストデータを生成する行もいくつかあります) -- +++ TABLE SETUP +++ CREATE TABLE [dbo].[TB_test1] ( [PK_ID1] [INT] IDENTITY(1, …

2
Oracle 11gR2で、マテリアライズドビューを作成したのと同じユーザーでドロップできないのはなぜですか?
DI_TEST_ALユーザーでマテリアライズドビューを作成しましたMY_MVIEW。名前を付けましょう。USER_OBJECTSテーブルにと表示され、MATERIALIZED VIEWドロップしようとすると、成功メッセージが表示されますが、オブジェクトはまだそこにあります。実際、それを再作成しようとすると、「オブジェクトはすでに存在しています」などのエラーが発生します。 別のスキーマに属する同じ名前のテーブルがあることがわかります。それは問題を引き起こさないと思いますが、私はそれについて言及したいと思いました。 SQL * Plusの出力は次のとおりです。 SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 17:01:50 2011 SQL> select object_name, object_type, owner from all_objects where object_name = 'MY_MVIEW'; OBJECT_NAME OBJECT_TYPE OWNER ----------- ----------------- ---------- MY_MVIEW MATERIALIZED VIEW DI_TEST_AL MY_MVIEW TABLE DIDEV11 SQL> DROP MATERIALIZED VIEW MY_MVIEW; Materialized view dropped. SQL> select …

1
トリガーを使用せずにPostgreSQLマテリアライズドビューを自動的に更新する
view_table_A外部データラッパーテーブルで名前が付けられたマテリアライズドビューを作成しましたtable_A。私が欲しいのは、に新しい挿入が行われるたびにビューが自動的に更新されるようにすることtable_Aです。トリガーを使用してこれを実行しようとしましたが、機能しませんでした。 トリガーを使用せずにマテリアライズドビューを自動的に更新することは可能ですか?

1
READPASTヒントにより、インデックス付きビューが無視されるのはなぜですか?
このREADPASTヒントを使用して、アプリケーションの金融サブシステムのリソースロックを削減することを調査しています。 金融取引記録は追加されるだけで、更新または削除されることはないため、良い方法のように思えました。スキップされる行は、トランザクション内に挿入された新しい行のみです。トランザクションがコミットされるまで、それらは事実上外界には存在しません。 ただし、READPASTヒントを付けたインデックス付きビューを使用するクエリのパフォーマンスが低下していることに気付きました。クエリプランを比較すると、ヒントのように見えます。クエリオプティマイザーは、インデックス付きビューを使用しないことを選択し、代わりに通常のビューのように扱います。 それがなぜかはわかりません。インデックス付きビューは、操作中にキーをロックでき、追加READPASTも同様に機能するという点で、他のインデックスと同じだと思います。 SELECT TOP 1 isa.InvoiceId FROM Financial_InvoiceSummaryAmounts isa WITH (READPAST) WHERE isa.TotalOwedAmount = 0.0 SELECT TOP 1 isa.InvoiceId FROM Financial_InvoiceSummaryAmounts isa WHERE isa.TotalOwedAmount = 0.0 NOEXPANDヒントの追加も機能するようですREADPASTが、クエリオプティマイザーがそもそもなぜ(完全な回答の一部として)選択したのか、おそらくその理由について詳しく知りたいと思います。

2
マテリアライズドビューの完全更新または手動での同等操作のやり直しを制限する
マテリアライズドビュー(MV)ログを使用すると、MVは、変更されたデータのみを変更する高速リフレッシュを実行できます。ただし、さまざまな条件により、MVはログを使用できないため、完全な更新が必要です。Oracleは、すべてのレコードの削除と挿入として、アトミック完全リフレッシュを実装しました。最終的にデータに変更がない場合でも、これを行います。 このレプリケーションをREDO生成に関してインテリジェントにする方法はありますか?MERGEに続いてDELETEを実行するには、ソースを2回クエリする必要があります。BULK MERGEおよびDELETEを実行するためにデータを一括収集することは価値がありますか?もっと良い方法はありますか? 更新: グローバル一時テーブルをステージング領域として使用することを検討しました。使用するREDOは半分未満ですが、それでも多くを使用しています。

1
データでマテリアライズドビューをバックアップおよび復元することは可能ですか?
マテリアライズドビューを計算するのが難しい場合がありますが、再計算ではなく、実際に保存されたデータを使用してバックアップおよび復元できるようにしたいと考えています。 PostgreSQL 9.4では可能ですか? (代わりの方法は、実際のテーブルを作成することですが、「更新」するのが困難です)

1
最高実行クエリを確認/知る方法
データベースで最も実行回数の多いクエリの統計を収集したいと思います。 そのため、私はクエリを追跡する方法を知っている必要があります。これにより、大きなDBがあるため、ビューまたはマテリアライズドビューを作成して、最も実行回数の多いクエリの結果をキャッシュできます。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.