나는 CakePHP 2.x를 사용하고 매거진에 넣고 싶은 게시물이 많은 스레드가 있습니다. 그러나 SQL 로그를 살펴보면 스레드의 모든 게시물 (25k)에 영향을주는 SELECT 문이 있습니다. 사실 20 개의 게시물 만 표시되므로이 오버 헤드를 피할 수있는 방법이 있습니까? 여기 CakePHP 2.0에서 페이지 매김
내 ThreadsController 여기public function view($id = null) {
$this->Thread->id = $id;
$this->paginate = array(
'conditions' => array(
'thread_id' => $id,
),
'order' => array(
'Post.id' => 'DESC')
);
if (!$this->Thread->exists()) {
throw new NotFoundException(__('Invalid thread'));
}
$this->set('thread', $this->Thread->read(null, $id));
$this->set('posts', $this->paginate('Post'));
}
의 코드는 모두 25000 행에 영향을주는 SQL 쿼리입니다 :
이 Post
을 선택합니다. id
, Post
. user_id
, Post
. post
, Post
. created
, Post
. modified
, Post
. thread_id
FR ppv3
. posts
AS Post
WHERE Post
. thread_id
= (1)
코드 및 SQL 쿼리를 게시 하시겠습니까? 당신이 말한대로 모든 것에 영향을주는 것이 있다면 그것은 카운트 쿼리입니까? – tigrang
이 (가) 내 질문을 편집했습니다. 불행히도 카운트 쿼리가 아닙니다. – napolin
어딘가에 또 다른 쿼리가있는 것처럼 보입니다 ... 페이지 생성이 어떤 이유로 주문을 무시한 경우를 제외하고 해당 작업에서 가지고있는 것 중 아무 것도 해당 쿼리를 생성해서는 안됩니다. – jeremyharris