0

集計関数 (fi count()) の結果を事前に集計してインデックスに格納する方法はありますか?

背景は: count() クエリを高速化したい。となることによって:

リージョン = 'A' の TE123 からカウント (ユーザー) を選択します。

Region Count(Users) A 548 E 458 のようなインデックスでサポートされます。

MQT がこの問題にも役立つことはわかっています。ただし、この場合、一種の ORM を使用し、MQT でエンティティを定義したくないため、MQT を使用することはできません。

DB2 V10 でそのような機能が計画されていることを、ある DBA が教えてくれました。

4

1 に答える 1

0

MQT は、クエリを書き直さなくても役立つ可能性があります。

マテリアライズド クエリ テーブルを使用すると、クエリ、特に複雑なクエリのパフォーマンスを大幅に向上させることができます。MQT を使用して照会または照会の一部を解決できるとオプティマイザーが判断した場合、MQT を利用するために照会が書き直されることがあります。

ソース

z/OS の場合:

DB2® は、自動照会再書き込みと呼ばれるプロセスを使用して、サブミットされた照会を透過的に再書き込みして、保管された結果をマテリアライズ照会表で使用できるようになるタイミングを認識します。基礎となる基本表から結果を計算する代わりに、マテリアライズ照会表を照会することにより、DB2 は一部の複雑な照会をより効率的に処理できます。

ソース

Linux/Unix/Windows の場合:

MQT の知識は、SQL および XQuery コンパイラーに統合されています。コンパイラーでは、照会書き直しフェーズとオプティマイザーが照会を MQT と突き合わせ、基本表にアクセスする照会で MQT を置換するかどうかを決定します。MQT が使用されている場合、Explain 機能は、選択された MQT に関する情報を提供できます。この場合、ユーザーには、再ルーティングされた MQT ではなく、基本テーブルに対するアクセス権限が必要です。

ソース

于 2012-11-29T17:02:23.700 に答える