2012-02-26 2 views
0

Mysql Server 5.5を使用しています。mysql join - フローの仕組みは?

姓はvarchar(20) IDNUMはint(20)

と私は両方のテーブルに参加したいIDNUM = 5:

は、私はfolowing列とfoo1のとfoo2はと呼ばれる2つの同一のテーブルを持って言うことができます

select * from foo1 
join foo2 on foo1.idnum=foo2.idum 
where foo1.idnum5; 

それは最初のテーブルとOのすべての行を結合しない:私は次のコードを使用して、それを実装する場合、今

nlyはwhereをフィルタリングし、idnum5の行を返します。

私はおそらくそのようにそれを実装する必要がありますので、それは本当だ場合:

select * from foo1 
join foo2 on foo2.idnum=5 
where foo1.idnum=5 

この実装が速く参加しているのですか?何か違いはありますか?

これは、これが私の結合クエリを最適化する方法の1つであるかどうかを知るために実際にどのように動作するかを理解しようとしています。

この問題に関する情報は非常に高く評価されます。

ありがとうございました!

答えて

0

ジョインのフローは、最終的な資格を得るためにテーブル間の関係を準備することに過ぎません。 WHERE句は、レコードをPRIMARYとして引き出すアプリケーションを実際に開始し、索引を利用してWHERE部分で参照されるどのテーブルからも限定されたレコードを最適化するように構造化されています。

この結果から、結合が適用されます(または左結合/右結合)。対応するallow THOSEレコードに含まれている場合は、WHERE句が通過できるデータの主なセットから除外されます。