3

http://dev.mysql.com/doc/refman/5.5/en/left-join-optimization.htmlで、次のように読むことができます。

LEFT JOINを使用して、一部のテーブルに存在しない行を検索し、次のテストを行う場合:WHERE部分でcol_name IS NULL、col_nameはNOT NULLとして宣言された列である場合、MySQLはそれ以上の行の検索を停止します(特定のキーの組み合わせ)LEFTJOIN条件に一致する1つの行が見つかった後。

人間が読める言語でそれが何を意味するのか、誰かが私に説明できますか?または初心者が読める言語で;)

4

2 に答える 2

2

右側のテーブルに一致しない行のみが返されます。これは次のように説明できます。

ここに画像の説明を入力してください

ご覧のとおり、2つのテーブルが結合されています。影付きの部分は、に存在しないレコードTable Bです。

于 2012-09-20T00:51:58.613 に答える
0

左結合は、結合条件に一致する行が右側のテーブルにない場合でも、左側のテーブルの各行に対して常に右側のテーブルの少なくとも 1 つの行を結合します。これが発生した場合、その行の右側のテーブルの列はすべて null になります。

これは、左結合を実行not nullし、右側のテーブル列で (列内の) null をテストすることは、結合されたテーブルに対応する行がない行をテストするための効果的なイディオムであることを意味します。

あなたが引用した抜粋は、最初のテーブルが結合されたら、右側のテーブルからの行の結合を停止するために、この形式のクエリを実行するときに MySQL が十分にインテリジェントであると言っています (そうするのは時間の無駄になるためです -右側のテーブルに一致しない行を探していることを明確にしたため、少なくとも 1 つの行が見つかった後にさらに行を探しても意味がありません)。

于 2012-09-20T01:02:36.897 に答える