2017-07-15 4 views
0

の分配法則私が興味を持って、次の同値が成立しているか否か:SQLクエリの最適化 - 参加自然との違い

NaturalJoin (R,S-T) equivalence Difference(NaturalJoin(R,S),NaturalJoin(R,T)) 

をそのような場合は、同等の理由を与えることができますか?そして、実行時の意味でどのようなクエリがより最適なものかを知っていれば、それは本当に役に立ちます。

P.S.私はLATEXを使いたいと思っていましたが、stackoverflowにはかなり新しいです。私はここでそれを使う方法について頭を悩ますように見えません - math.stackexchangeのマークアップはちょうど\[...\]です。

+0

私はこれらが同等であるとは思わない。また、キーが明示的に定義されていないので、 '自然結合 'を避ける必要があります。これは問題を引き起こす可能性があります。 –

+0

まず、私はそれらも同等ではないと思ったが、私は2つの例を書いて、彼らは働いた。潜在的な理由として明示的に定義されたキーがないことがありますか? – Abbraxas

+0

Googleのユニコードリレーショナルジョイン。 – philipxy

答えて

1
NaturalJoin (R,S-T) equivalence Difference(NaturalJoin(R,S),NaturalJoin(R,T)) 

これに対処するための一般的な方法は、その定義により、オペレータコールを交換することです。

ここでは、関係式とそれらが保持するタプルとの間の特定の等価性を前提としています。実際には、照会が取得するよう要求されたタプルを返すことを正当化するために同値を使用する必要がありますが、これは通常説明されていません。 (代わりに多くの例を介して学習し、手渡しする)。

S & Tは同じ属性セットを持っています。
Xは、行が(...)の場合、X(...)、つまり(...) IN Xとなります。
NATURALJOIN(X,Y)は、X(...) AND Y(...)の行を保持します。
DIFFERENCE(X,Y)は、X(...) AND NOT Y(...)の行を保持します。

(R(...) AND S(...)) AND NOT (R(...) AND T(...)) 
(R(...) AND S(...)) AND (NOT R(...) OR NOT T(...)) 
((R(...) AND S(...)) AND NOT R(...)) OR ((R(...) AND S(...)) AND NOT T(...)) 
(R(...) AND S(...) AND NOT R(...)) OR (R(...) AND S(...) AND NOT T(...)) 
R(...) AND S(...) AND NOT T(...) 

だから、彼らは等価です:

R(...) AND (S(...) AND NOT T(...)) 
R(...) AND S(...) AND NOT T(...) 

右の行を保持します。

左の行を保持しています。

あなたはx IN XによってX(...)を交換し、適切な定量(FORALL & FORSOME/EXISTS)を使用して証明にこれを変換し、内包({variable|wff})を設定することができます。

推論の自然な結合を使用して& SQLはthis answerとそのリンクを参照してください。

実行時の意味でどのようなクエリが最適なのか分かっていれば、本当に役に立ちます。

DMBSとそのクエリの実装/最適化によって異なります。実行モデル、コスト/利益関数、およびその関数の入力引数がない場合、「最適」は存在しません。さらに、「最適」はカオス的である - 関係の小さな変更&物理的なDDL、データベースの内容&の統計情報、問合せのDML、問合せ&更新パターンとDBMSの実装では、全く異なるトレードオフが生じる可能性があります。

+0

ありがとう!私が働いている会社はMicrosoft SQL Serverを使い、私はpostgreSQLを私的に使っています。私はMicrosoftのDBMSの効率性に興味があります。あなたはその情報をどこで見つけることができるのか考えていますか?もう一度、あなたの答えに感謝します。 – Abbraxas

+0

データベースの最適化/パフォーマンス/効率/ etcは、理論的な経験的な生涯学習のトピックです。全書籍のGoogleさまざまなDBMSのさまざまな実装については、ドキュメントのトピックを読んでから始めることができます。どうすれば[Wikipedia](https://en.wikipedia.org/wiki/Query_optimization)? 「ベスト」は混沌としています。要件、リレーショナル&インプリメンテーションDDL、DML&DBMSの実装のわずかな変更は、全く異なるトレードオフをもたらす可能性があります。 PSすべてのコメントの前に、Google。そこには大きな世界がある。 – philipxy