Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql CakePHP:延迟行查找_Mysql_Cakephp_Innodb - Fatal编程技术网

Mysql CakePHP:延迟行查找

Mysql CakePHP:延迟行查找,mysql,cakephp,innodb,Mysql,Cakephp,Innodb,我们有一个CakePHP查询,它真的开始让我们的服务器陷入困境。问题是大量的记录被返回并分页。如果用户进入分页的末尾(例如,第60000页),查询将花费大量时间,我们的cpu使用率也会急剧上升。在我们放弃并限制分页记录的数量之前,我们希望至少尝试提高查询的效率 我们知道问题是行查找太晚,并且我们知道存在解决方案(例如:),但是我们很难将标准的CakePHP查询移动到对我们有帮助的地方 这是我们的蛋糕查询: $pagination = array( 'Sentence' => arr

我们有一个CakePHP查询,它真的开始让我们的服务器陷入困境。问题是大量的记录被返回并分页。如果用户进入分页的末尾(例如,第60000页),查询将花费大量时间,我们的cpu使用率也会急剧上升。在我们放弃并限制分页记录的数量之前,我们希望至少尝试提高查询的效率

我们知道问题是行查找太晚,并且我们知道存在解决方案(例如:),但是我们很难将标准的CakePHP查询移动到对我们有帮助的地方

这是我们的蛋糕查询:

$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蛋糕应用程序。是的,我知道。。。。。