2016-04-14 10 views

答えて

2

これはコメントには長すぎます。

最初。 NATURAL JOINは使用しないでください。それは起こるのを待っているバグです。 NATURAL JOINは、JOINキーに同じ名前を持つフィールドを使用します。宣言された外部キーの関係も考慮に入れません。

今日はクエリを書くことができますし、基礎となるテーブルに小さな変更を加えても完全にクエリを破ることができます(これは別のやり方でも起こり得ることです)。しかし、悲惨なことは、クエリにのロジックが表示されないことです。代わりにUSINGまたはONを使用してください。

第2に、ほとんどのデータベースには最適化フェーズがあります。この段階は、処理のための最良の順序を決定する。したがって、順序を変更しても影響はありません。データベースエンジンが注文を決定するためです(ヒントを使用してそれを上書きしない限り)。

+0

ありがとうございました!私はそれが今どのように動作するかを見ます。では、ほとんどのデータベースが最適化の順序をどのように決定していますか? – RhumB

+0

どのようにそれを決定するのですか?テーブルの統計、インデックス、キャッシュ、メモリ、あらゆる種類のものを調べ、データを返す最も速い方法を試しています。たとえば、インデックスがテーブルXでのフィルタリングによって後続の結合のレコードが大幅に減少した場合、最初にそれを実行することができます。基本的に知る必要があることは、データベースが可能な限り迅速に正しい結果を出すことです。同じ機能的なクエリを12種類の異なる方法で記述することができます。また、ほとんどの場合、何を配置する順序にかかわらず同じクエリプランを得ることができます –

関連する問題