cakephp加入vs包含

时间:2014-07-09 12:02:03

标签: cakephp

我正在使用cakephp(2.4.7)开发,我正在使用可包含的选项。

我在可包含的数组中有大约15个表/模型的find语句,我的查询日志显示大约60-100个查询。

由于更好​​的性能,我应该使用连接而不是可包含吗?

我的网站需要高性能标准。

是否可以根据可包含的链接模型自动加入,或者我必须手动设置连接,如:

示例:

 $this->Message->find('all', array(
    'joins' => array(
        array(
            'table' => 'users',
            'alias' => 'UserJoin',
            'type' => 'INNER',
            'conditions' => array(
                'UserJoin.id = Message.from'
            )
        )
    ),
    'conditions' => array(
        'Message.to' => 4
    ),
    'fields' => array('UserJoin.*', 'Message.*'),
    'order' => 'Message.datetime DESC'
));

指导我实现目标的正确方法。

1 个答案:

答案 0 :(得分:0)

Contain需要大量系统资源才能从表中生成数据,因为它会进行大量查询并对每个查询应用Hash :: nest()函数。

但是通过连接,您将获得大量的公开数据,并且您需要自己从中提取数据。不是最好的解决方案,呵呵。

我不知道哪一个更适合您,但获得最佳效果的最佳方法是在表格中使用索引缓存