カテゴリー Home > php > CakePHPのアソシエーションでInner Joinを利用してレスポンス速度を向上

CakePHPのアソシエーションでInner Joinを利用してレスポンス速度を向上

  • ( 21 )
  • ( 0 )
  • ( 4 )
  •  2008/12/15 (Mon)

レコードサイズが大きくなってくるとhasOneやbelongsToのアソシエーションでかなり時間を食うときがあります。特に大きな処理をしなくても、ページアクセス時にControllerでdescribe <Table>して、結合した結果を舐めて時間が食われます。

いくらなんでも時間かかりすぎだろ、、と思ってよく調べてみたらCakeでのテーブル間JoinてLeft Joinになってるんですね。クエリ凝視するまで気づかなかった。これ、特に問題なければ内部結合(Inner Join)にするだけでレスポンス速度は大きく変わります。方法はModelでアソシエーション対象Model名のtypeを"INNER"にするだけ。

<?php
class User extends AppModel {
        var $name = 'User';
        
        var $hasOne = array(
                'Profile' => array(
                        'className' => 'Profile',
                        'foreignKey' => 'user_id',
                        'conditions' => '',
                        'type' => ' INNER'
                )
        );
}
?>

こういうテクはもちろんケースバイケースですけど、意外に盲点なチューニング方法かもしれません。

 | 

Google Adsense

Social bookmark comment : 0

No comment.

Comment : 0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info
           

Trackback : 0

TrackBack URL for this entry
http://blog.katsuma.tv/mt-tb.cgi/185
Listed below are links to weblogs that reference
CakePHPのアソシエーションでInner Joinを利用してレスポンス速度を向上 from blog.katsuma.tv

Home > php > CakePHPのアソシエーションでInner Joinを利用してレスポンス速度を向上

Search
Feeds
Google Adsense

Page Top