LEFTJOINの実装がINNERJOIN+より多くの作業であると考える場合、この結果は混乱を招きます。 INNER JOINの実装が(LEFT JOIN +フィルタリング)の場合はどうなりますか?ああ、今は明らかです。
クエリプランでの唯一の違いは次のとおりです。users... extra:using where 。これはフィルタリングを意味します。 追加のフィルタリング手順があります 内部結合を使用したクエリで。
これは、where句で通常使用されるものとは異なる種類のフィルタリングです。このフィルタリングアクションをサポートするために、Aにインデックスを作成するのは簡単です。
SELECT *
FROM A
WHERE A.ID = 3
このクエリについて考えてみましょう:
SELECT *
FROM A
LEFT JOIN B
ON A.ID = B.ID
WHERE B.ID is not null
このクエリは、内部結合と同等です。そのフィルタリングアクションを支援するBのインデックスはありません。その理由は、where句が、Bの条件ではなく、結合の結果の条件を示しているためです。