myapp.dev:port から mamp v2.1.3 (pro ではないため、これが最新バージョンです) でローカルに Cake アプリケーション v2.3.1 を実行していますが、サイトにページネーションがあると (約 5秒)、コントローラー内の私のコードは次のとおりです。
public $paginate = array(
'fields' => array('Artist.id, Artist.year_born, Artist.year_died, Artist.country_born'),
'limit' => 50,
'order' => array('Artist.id' => 'desc')
);
AppController.php で次のように、ページネーションhttps://github.com/slywalker/TwitterBootstrapに Twitter ブートストラップ プラグインを使用します。
public $helpers = array('Paginator' => array('className' => 'TwitterBootstrap.BootstrapPaginator'));
ページネーションの を 1 に設定しようとしましたlimit
が、ブートストラップの代わりにケーキ独自のページネーションを使用しようとしましたが、それでも非常に遅いです。myapp.dev:port/artists/view/14532 のようなアーティストにアクセスできるため、ページネーションを使用する必要があり、それはうまく機能するため、SQLクエリとは何の関係もないと思います。
/etc/hosts ファイルの名前を変更してみました127.0.0.1 localhost myapp.dev
が::1 localhost myapp.dev
、何も機能しないようです。何か案は?私は本当に立ち往生しています。
更新:私の Artist テーブルの hasMany 関係について言及しないのは少し残念です。これは私のアーティストモデルです:
class Artist extends AppModel {
public $hasMany = array(
'ArtistBiography' => array('dependent' => true),
'ArtistSurname' => array('dependent' => true),
'ArtistSignature' => array('dependent' => true),
'ArtistForename' => array('dependent' => true),
'ArtistMonogram' => array('dependent' => true));
public $hasOne = array(
'ArtistActive' => array('dependent' => true));
}
DebugKit を使用したところ、ページネーターが 2 つの左結合に対して 2 つの不要なクエリを実行し、両方とも実行に約 2000 ミリ秒かかることがわかりました。ページネーターにこれを無視するように指示するにはどうすればよいですか? 私は新しい関係を与えるためにこのようなことを試みました:
public $paginate = array(
'fields' => array('Artist.id, Artist.year_born, Artist.year_died, Artist.country_born'),
'limit' => 50,
'order' => array('Artist.id' => 'desc'),
'joins' => array(
array('table' => 'artist_forenames', 'alias' => 'ArtistForename', 'type' `=> 'inner', 'conditions' => array('Artist.id = ArtistForename.artist_id')),`
array('table' => 'artist_surnames', 'alias' => 'ArtistSurname', 'type' => 'INNER', 'conditions' => array('Artist.id = ArtistSurname.artist_id'))),
'recursive' => -1
);
しかし、これを機能させる方法がわかりません。私が基本的に望んでいるのは、artist_surnames
andを結合し、artist_fornames
呼び出された 2 つのテーブルを無視することでartist.actives
ありartist_monogram
、両方を一緒にすると、クエリが 4000 ミリ秒遅くなります。
ここでの 2 番目の質問は、なぜこれら 2 つの結合によって速度が大幅に低下するのかということです。私は 100 人のアーティストをリストしている artist/all と呼ばれるテスト ビューを実行しました。すべての結合を含むクエリは約 40 ~ 50 ミリ秒で完了します。