Mysql CakePHP:延迟行查找
我们有一个CakePHP查询,它真的开始让我们的服务器陷入困境。问题是大量的记录被返回并分页。如果用户进入分页的末尾(例如,第60000页),查询将花费大量时间,我们的cpu使用率也会急剧上升。在我们放弃并限制分页记录的数量之前,我们希望至少尝试提高查询的效率 我们知道问题是行查找太晚,并且我们知道存在解决方案(例如:),但是我们很难将标准的CakePHP查询移动到对我们有帮助的地方 这是我们的蛋糕查询:Mysql CakePHP:延迟行查找,mysql,cakephp,innodb,Mysql,Cakephp,Innodb,我们有一个CakePHP查询,它真的开始让我们的服务器陷入困境。问题是大量的记录被返回并分页。如果用户进入分页的末尾(例如,第60000页),查询将花费大量时间,我们的cpu使用率也会急剧上升。在我们放弃并限制分页记录的数量之前,我们希望至少尝试提高查询的效率 我们知道问题是行查找太晚,并且我们知道存在解决方案(例如:),但是我们很难将标准的CakePHP查询移动到对我们有帮助的地方 这是我们的蛋糕查询: $pagination = array( 'Sentence' => arr
$pagination = array(
'Sentence' => array(
'fields' => $fields,
'contain' => $contain,
'conditions' => array(
'text' => $text,
),
'limit' => CurrentUser::getSetting('per_page'),
'order' => "Sentence.id desc"
)
);
$contain具有多个关系,其中两个关系的深度超过一层:
Array
(
[Favorites_users] => Array
(
[fields] => Array
(
)
)
[User] => Array
(
[fields] => Array
(
[0] => id
[1] => username
[2] => group_id
[3] => level
)
)
[SentencesList] => Array
(
[fields] => Array
(
[0] => id
)
)
[Transcription] => Array
(
[User] => Array
(
[fields] => Array
(
[0] => username
)
)
)
[Translation] => Array
(
[Transcription] => Array
(
[User] => Array
(
[fields] => Array
(
[0] => username
)
)
)
)
)
我们可以通过此原始查询获取基本语句表信息:
SELECT {$lFields}
FROM (
SELECT {$fields}
FROM sentences AS Sentence
ORDER BY
id DESC
LIMIT 10
) q
JOIN sentences l
ON l.id = q.id
ORDER BY
q.id DESC
然而,这并没有得到任何关系,Cake实际上与输出格式不一致
那么,有没有可能让Cake进行一个查询,从而最大限度地减少延迟的行查找时间呢?通过偏移量进行分页的速度非常慢。想一想如何“记住你离开的地方” 通过
OFFSET
分页速度非常慢。想一想如何“记住你离开的地方” 请始终提及您的确切CakePHP版本!在不同的版本中,问题可以用不同的方式解决。啊,很抱歉。这是一款传统的1.3蛋糕应用程序。是的,我知道……请经常提及您的CakePHP版本!在不同的版本中,问题可以用不同的方式解决。啊,很抱歉。这是一款传统的1.3蛋糕应用程序。是的,我知道。。。。。