joinとprefetch

ここまでやってそういやjoinなんてのあったよね、と思い出してなにが違うんだろうと思ってやってみる。前のエントリのコードのprefetchをjoinに置き換えて比較。


join

SELECT me.id, me.genre_name, me.place_name FROM master me  JOIN genre genre_name ON ( genre_name.genre_name = me.genre_name )  JOIN place place_name ON ( place_name.
place_name = me.place_name )  JOIN place_ref place_name_2 ON ( place_name_2.place_ref_name = place_name.place_name ):
SELECT me.genre_name FROM genre me WHERE ( ( ( me.genre_name = ? ) ) ): 'genre1'
genre1 at t.pl line 10.
SELECT me.place_name FROM place me WHERE ( ( ( me.place_name = ? ) ) ): 'place1'
SELECT me.place_ref_name FROM place_ref me WHERE ( ( ( me.place_ref_name = ? ) ) ): 'place1'
place1 at t.pl line 11.


prefetch

SELECT me.id, me.genre_name, me.place_name, place_name.place_name, place_name_2.place_ref_name, genre_name.genre_name FROM master me  JOIN place place_name ON ( plac
e_name.place_name = me.place_name )  JOIN place_ref place_name_2 ON ( place_name_2.place_ref_name = place_name.place_name )  JOIN genre genre_name ON ( genre_name.ge
nre_name = me.genre_name ):
genre1 at t.pl line 10.
place1 at t.pl line 11.

joinは単純にjoinしてるだけなのね(当たり前)
joinはケースに応じて表示するものが変わる物に、prefetchは全表示のときに使うみたいな感じなのかな。