0
最適化プロセスのために、より大きな結果を持つ関係に参加するのか、それともより小さな結果をもたらすのか?Naturalは3つのリレーションシップを結び、より良いパフォーマンスを提供します。
最適化プロセスのために、より大きな結果を持つ関係に参加するのか、それともより小さな結果をもたらすのか?Naturalは3つのリレーションシップを結び、より良いパフォーマンスを提供します。
これはコメントには長すぎます。
最初。 NATURAL JOIN
は使用しないでください。それは起こるのを待っているバグです。 NATURAL JOIN
は、JOIN
キーに同じ名前を持つフィールドを使用します。宣言された外部キーの関係も考慮に入れません。
今日はクエリを書くことができますし、基礎となるテーブルに小さな変更を加えても完全にクエリを破ることができます(これは別のやり方でも起こり得ることです)。しかし、悲惨なことは、クエリにのロジックが表示されないことです。代わりにUSING
またはON
を使用してください。
第2に、ほとんどのデータベースには最適化フェーズがあります。この段階は、処理のための最良の順序を決定する。したがって、順序を変更しても影響はありません。データベースエンジンが注文を決定するためです(ヒントを使用してそれを上書きしない限り)。
ありがとうございました!私はそれが今どのように動作するかを見ます。では、ほとんどのデータベースが最適化の順序をどのように決定していますか? – RhumB
どのようにそれを決定するのですか?テーブルの統計、インデックス、キャッシュ、メモリ、あらゆる種類のものを調べ、データを返す最も速い方法を試しています。たとえば、インデックスがテーブルXでのフィルタリングによって後続の結合のレコードが大幅に減少した場合、最初にそれを実行することができます。基本的に知る必要があることは、データベースが可能な限り迅速に正しい結果を出すことです。同じ機能的なクエリを12種類の異なる方法で記述することができます。また、ほとんどの場合、何を配置する順序にかかわらず同じクエリプランを得ることができます –