--

--

コメント

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
管理者にだけ表示を許可する

この記事のトラックバックURL

http://welcomevac201world.blog84.fc2.com/tb.php/11-21ef753e

08

12

コメント

コンテイナブル

今までは結構騙し騙しやっていたんだけれど、
やっぱりSQLの発行件数がやたらと多いぞCakePHP

1トランザクションで30回くらいSQL発行しているけど、
減らせるのかちょっとわからなかったので、
とりあえず、重そうな検索を
きちんとコンテイナブルしてみる。
(参考:The Cookbook 1.2 Collection 6.2 コンテイナブル

コンテイナブルすると、modelクラスでリレーションを組んでいる
(hasManyとかbelongsToとかHABTMしている)
テーブルのデータを選択することができる。
取ってきたいテーブル、カラムを記入することで、
コンテイナブルの対象となる。

例えばUserなんかは色んなテーブルと
リレーションしていると思うんだけど、
それをProfileだけ取ってきたい!という感じで使える。


とまぁ、なんとなく書いたけど、
今はきちんとした対応をしている余裕が無いので、
暫定的に、一応使うテーブルだけを
引っ張ってくるようにしてみた。

まず、containするmodelクラスに
以下を追加

var $actsAs = array('Containable');


次に、controllerのいたるところにある
findの第2引数にcontainを追加

$result = $this->User->find('all', array(
  'conditions' => $conditions,
  'contain' => array(
    'Profile'
  )
));



サンプルの内容はちょっと変えているけど、
今回はこんな感じで、
findの第2引数に'contain'をちょこちょこ追加。

目に見えて早くなるわけじゃないけど、
すくなからずスループットは良くなるはず!

もっと大々的に修正したいわ。
あぁぁぁ。
関連記事
スポンサーサイト
管理者にだけ表示を許可する

この記事のトラックバックURL

http://welcomevac201world.blog84.fc2.com/tb.php/11-21ef753e

ようこそ!

ブロとも申請フォーム

ブロ友申請大歓迎です!
一覧に表示されるので自動で相互リンクになります!

>> ブロ友申請はこちら <<

検索フォーム

最近のコメント

メールフォーム

名前:
メール:
件名:
本文:

FC2ブログランキング

人気ブログランキング

人気ブログランキング

ブログ村

アクセスランキング

[ジャンルランキング]
育児
621位
アクセスランキングを見る>>

[サブジャンルランキング]
パパ育児
49位
アクセスランキングを見る>>

やーんは今、

ブロとも一覧

Designed by

Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。