クロス結合で結果セットが作成されると、結果セットは on 条件に従ってフィルター処理されます
#straight_join
SQL の順序に従って厳密にドライバー テーブルを指定します。
左側のテーブルはドライバーです。この文は次のように書き直すことができます。その本質は、入れ子になったループの操作として理解できます。外側の for ループはテーブルを駆動し、内側の for ループはテーブルを駆動します。駆動テーブル。構成されたデータを接続する戦略に応じて 3 つのアルゴリズムに分けることができます。 Simpe Nested-Loop Join
実行プロセス (ディスクスキャン)
;
テーブル t1 の終わりでループが終了するまで、ステップ 1 ~ 3 を繰り返します。
R の各行について、ツリー検索プロセスを使用して、フィールドに基づいてテーブル t2 を検索します。
Block Nested-Loop Join
mysql は
joinbufferJOIN の場合のみtype は ALL、結合バッファーは、index、rang、または Index_merge が使用される場合にのみ使用されます。SQL クエリのタイプは Explain で確認できます。
結合アルゴリズムを最適化するために、インデックスのネストループ結合アルゴリズムを使用してインデックスを作成します。接続フィールドのフィールド
結合バッファーのサイズ (一度にキャッシュされるデータが多いほど、外部テーブル内のループの数は少なくなります)
暗黙的な変換と文字に注意してくださいインデックスの失敗を避けるための接続フィールドのエンコード
以上がMySQL Join の使用原理は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。