-1

クエリの最適化について学んでいます。一般に、JOINの前にPROJECTとSELECTを適用すると、パフォーマンスが向上します。私の質問は:

JOIN操作を適用する前にSELECT操作を適用したり、JOIN操作を適用する前にPROJECT操作を適用したりする方が良い場合はありますか?

ご回答ありがとうございます。

4

1 に答える 1

1

「選択を押し下げる」ことは、実行する必要がある I/O の量を減らすことができる基本的な最適化戦略の 1 つです。

たとえば、サーガブルな述語を含むセレクションが join の下にプッシュされた場合、外部リレーションのタプルの数を減らすことで I/O の数を効果的に減らします (ネストされたループの結合には |R|+|R|*|Q| I/O が必要です)。

選択を押し下げることの主な欠点は、元のリレーションの既存のインデックスが使用できない状況です。プッシュするかどうかの決定は、結合方法の選択と連動して行われます。

同様に、プロジェクションが結合に必要な属性を保持している場合は、プロジェクションを「押し下げる」ことができます。

于 2013-02-23T17:57:30.163 に答える