我使用 CakePHP 2.x 并且有一个线程,其中包含许多帖子,我想对其进行分页。但是当我查看 sql-log 时,有一个 SELECT 语句会影响线程的所有帖子(25k)。实际上只显示了 20 个帖子,那么有没有办法避免这种开销?
这是我的 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'));
}
这是影响所有 25k 行的 SQL 查询:
选择Post
。id
, Post
. user_id
, Post
. post
, Post
. created
, Post
. modified
, Post
. thread_id
从ppv3
。在posts
哪里。= (1)Post
Post
thread_id