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は全表示のときに使うみたいな感じなのかな。