preload (プリロード)のお話
今日仕事してていいものを見つけたから記述。
たとえば○×学校と△△学校というマスタに
生徒がぶら下がっていて以下のようになっている場合。
・学校マスタ(data_school)
id | name |
---|---|
1 | ○×学校 |
2 | △△学校 |
id | school_id | name |
---|---|---|
1 | 2 | 山田太郎 |
2 | 1 | 山田花子 |
3 | 2 | 山田ジェイソン |
//初期化しておく $preload = array(); $shools = /*適当に学校マスタを全部取得*/; foreach($shools as $school){ $preload[$school->id] = $school; } //生徒を参照。 $chailds = /*生徒が全部とる*/; foreach($chailds as $chaild){ $chailds->school = $preload[$chaild->school_id]; }
これだけ見るとなんか逆に重たくなるわ。
って思うけど大きいテーブルを扱うときには負荷軽減になるときもあると思われます。