10.6. XQuery の最適化


ドキュメント展開と呼ばれる手法は、コンテキスト項目ドキュメントのメモリーフットプリントを削減するために使用されます。ドキュメントの展開は、関連する XQuery およびパス式で必要なドキュメントの一部のみを読み込みます。ドキュメントプロジェクト分析は関連するすべてのパス式を使用するため、/a/ b/x ではなく //x など、多数のノードを使用できる可能性のある 1 つの式でもメモリーフットプリントが大きくなります。関連するコンテンツが削除された場合でも、処理のためにドキュメント全体がメモリーに読み込まれます。ドキュメントの展開は、XMLTABLE/XMLQUERY に渡されるコンテキストアイテム(名前のない PASSING 句項目)がある場合にのみ使用されます。名前付き変数には、ドキュメントの展開は実行されません。オプティマイザーがドキュメントの展開を使用するために、使用する式が複雑すぎることがあります。適切な最適化が実行されたかどうかを確認するには、SHOWPLAN DEBUG の完全なプランの出力を確認してください。

追加の制限により、Simple コンテキストパス式を使用すると、メモリーの完全なドキュメントをロードせずに、プロセッサーがドキュメントサブツリーを個別に評価できます。単純なコンテキストパス式の形式は [/][ns:]root/[ns1:]elem/…' の形式にすることができます。ここで、namespace プレフィックスまたは要素名は *ワイルドカードにすることもできます。XQuery 式で名前空間接頭辞が使用されている場合の通常の XQuery 処理と同様に、XMLNAMESPACES 句を使用して宣言する必要があります。

適格な XMLQUERY のストリーミング

XMLQUERY('/*:root/*:child' PASSING doc)
Copy to Clipboard Toggle word wrap

ドキュメントインメモリー全体を DOM ツリーとしてロードするのではなく、各子要素は結果を別個に追加されます。

受信可能な XMLQUERY のストリーミング

XMLQUERY('//child' PASSING doc)
Copy to Clipboard Toggle word wrap

子軸を使用するとストリーミングの最適化は回避されますが、ドキュメントの展開は引き続き実行できます。

XMLTABLE を使用する場合は、COLUMN PATH 式に追加の制限があります。これらはコンテキスト式によって形成された要素サブツリーの任意の部分を参照することができ、直接親から任意の属性値を使用できます。現在のコンテキストアイテムの ancestor またはシブリングを参照できるパス式により、ストリーミングが使用できなくなります。

適格な XMLTABLE のストリーミング

XMLTABLE('/*:root/*:child' PASSING doc COLUMNS fullchild XML PATH '.', parent_attr string PATH '../@attr', child_val integer)
Copy to Clipboard Toggle word wrap

コンテキスト XQuery と列パス式では、ドキュメント全体のインメモリーを DOM ツリーとしてロードするのではなく、ストリーミングの最適化が可能になります。各子要素は、結果に個別に追加されます。

streaming ineligible XMLTABLE

XMLTABLE('/*:root/*:child' PASSING doc COLUMNS sibling_attr string PATH '../other_child/@attr')
Copy to Clipboard Toggle word wrap

sibling_attr パスの子サブツリー外の要素の参照により、ストリーミングの最適化は使用されませんが、ドキュメントの展開は依然として実行できます。

注記

パフォーマンスの問題を回避するために、列パスはできるだけターゲットである必要があります。..//child などの一般的なパスにより、各出力行でコンテキストアイテムのサブツリー全体が検索されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat