左のSQLは、の基本原理に参加します

入門

left join戦いは上でなかった場合の効果は表の左のすべての情報を保持するために達成され、右のテーブルの上にステッチは、テーブルを残しましたNULL

加えてleft join外だけでなく、inner joinouter joinright joinというように、主に、他の特定の接続の効果を記載していない記事join基本原理は、どのように達成しますか?レンダリングされた具体的な効果は何ですか?

あなただけがより良い順番はSQLスクリプト、SQL実行速度増加の優れた性能を記述することで、基本的な原理を理解しています。

join具体的には主に次の3通りの方法があります:

  • ネステッド・ループ - 接続は以下の3種類に分け、ループをネストされました:
    • シンプルな入れ子ループ結合します
    • インデックスネストされたループが参加します
    • ブロックのネスト・ループ結合します
  • ハッシュ結合
  • 参加マージ

その他の概念:

テーブルをドライブ(も見て呼ばれる)とテーブル駆動(とも呼ばれる非駆動表を、また、テーブルに呼ばれ、マッチテーブルと呼ばれる)は、単に、ドライブテーブルがプライマリ・テーブルで、left joinテーブルは、ドライブのテーブルを残しているright join中で右の表は、駆動表です。

駆動テーブルは、それだけで、他の非駆動表にすることができるjoinプロセス、実際には、駆動テーブルからその順番に取ら値ごとに(順番が分かることに留意されたい)、次いで内部非駆動テーブルと一致します。

シンプルな入れ子ループ結合します

Simple Nested-Loop Join認知の接続方法に合わせて、最も簡単で最もよく理解され、ほとんどの皆であるこれらの三つの方法。

そこの2つの表はあるtable Atable B私たちは聞かせて、table A left join table Bどのように試合を観察します。



駆動テーブルからtable Aれる順番を取っ、非駆動テーブルに移動し、各値のためにtable B行われる試合から順次ダウン値を返すために、。

この方法で実行するには、合計必要性に合致する10×10=100クエリを。

インデックスネストされたループが参加します

屈折率整合使用Indexマッチの数は検索効率を改善しなければならなかったので、インデックス付き非駆動テーブルで必要を、指数を低減することができます。

一般にインデックスデータベースの使用B+树ストレージ構造を、効率を向上させることができます。

インデックスが主キーの場合、主キーは一意である必要がありますので、その後、より効率的になります。その場合の表は、接続するために、主キーによって駆動されている、または多対一の状況が生じることになる、とケースと多対多のではありません。

ブロックのネスト・ループ結合します

理想的には、インデックスの試合は、道の最も効率的な種類があるが、実際の作業ではなく、すべての列は、インデックス列が最初に、この時間はあなたがブロック入れ子状ループ結合方法を使用する必要があり、この方法です方法比較的類似し、唯一の違いは、そのテーブルは、列のすべての参加左に関する駆動している(カラムは、同様に、列選択部に使用されるよりも)最初のキャッシュ領域に取り出し、そして行くとテーブルマッチングを非駆動、この方法回数に一致し、第1の方法は同様に比べ要求され、差が駆動表の異なる列の数である、すなわち、データの異なる量の数です。

したがって、が一致の数は減少したが、それでも全体的なクエリのパフォーマンスの向上を持っていません。

参考リンク:SQL基本原理

おすすめ

転載: www.cnblogs.com/hider/p/11616518.html