アプリケーションの設計では、負荷の高い集約操作やジョイン操作を含むクエリのように、コストの高いクエリやクエリでコストの高い部分を頻繁に実行する場合は、マテリアライズド・ビューを定義することを検討してください。マテリアライズド・ビューは、次のような環境でのパフォーマンスを向上することを目的に設計されています。
データベースのサイズが大きい。
頻繁なクエリにより、大量のデータに対する集約操作やジョイン操作が繰り返し実行される。
基本となるデータへの変更は頻度が比較的少ない。
最新のデータにアクセスすることは重大な要件ではない。
マテリアライズド・ビューの恩恵を受けるためにクエリを変更する必要はありません。たとえば、基本となるデータが頻繁に変更されないようなデータ・ウェアハウス・アプリケーションでの使用にマテリアライズド・ビューは向いています。
最適化時に送信されるクエリを部分的または全体的に満たす候補として見なされるマテリアライズド・ビューについて、オプティマイザはそのリストを管理します。オプティマイザがクエリの全体または部分を満たす候補となるマテリアライズド・ビューを検出すると、最適化の列挙フェーズ (コストを基に最適なプランを判断する) で行われる推奨の対象にそのビューを含めます。マテリアライズド・ビューをクエリに一致させるためにオプティマイザが使用する処理を「ビュー・マッチング」と呼びます。オプティマイザがマテリアライズド・ビューを検討するには、そのビューが一定の条件を満たす必要があります。つまり、マテリアライズド・ビューがクエリによって明示的に参照されないかぎり、オプティマイザによって使用される保証がありません。ただし、検討されるビューが条件を満たすようにすることはできます。
マテリアライズド・ビューの使用が許可されていることをオプティマイザが判断すると、候補となるマテリアライズド・ビューのそれぞれが検査されます。マテリアライズド・ビューは、次の場合にビュー・マッチング・アルゴリズムによって使用することが検討されます。
データベース・サーバでマテリアライズド・ビューを使用できる。マテリアライズド・ビューの有効化と無効化を参照してください。
最適化でマテリアライズド・ビューを使用できる。オプティマイザによるマテリアライズド・ビューの使用の有効化と無効化を参照してください。
マテリアライズド・ビューが初期化されている。マテリアライズド・ビューの初期化を参照してください。
マテリアライズド・ビューが検討すべきオプティマイザ要件をすべて満たしている。マテリアライズド・ビューとビュー・マッチング・アルゴリズムを参照してください。
マテリアライズド・ビューを作成するための重要なオプションの値が、クエリを実行する接続のオプションと一致する。マテリアライズド・ビューの制限を参照してください。
マテリアライズド・ビューの最後のリフレッシュが、materialized_view_optimization データベース・オプションに設定された古さのしきい値を超えていない。オプティマイザでのマテリアライズド・ビューに対する古さのしきい値の設定を参照してください。
マテリアライズド・ビューが上記の基準を満たし、クエリの全体または一部を満たすことがわかった場合、コストベースの最適プランが検出されると、ビュー・マッチング・アルゴリズムは最適化の列挙フェーズ用の推奨にマテリアライズド・ビューを含めます。ただし、それにより最終的にそのマテリアライズド・ビューが最終実行プランで使用されるというわけではありません。たとえばマテリアライズド・ビューを使用しない別のアクセス・プランの方がコストが安いと推定されると、クエリの結果を計算するのに適切であると考えられるマテリアライズド・ビューであっても使用されない可能性があります。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |