我正在使用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'
));
指导我实现目标的正确方法。
答案 0 :(得分:0)
Contain需要大量系统资源才能从表中生成数据,因为它会进行大量查询并对每个查询应用Hash :: nest()函数。
但是通过连接,您将获得大量的公开数据,并且您需要自己从中提取数据。不是最好的解决方案,呵呵。
我不知道哪一个更适合您,但获得最佳效果的最佳方法是在表格中使用索引并缓存。