我在Yii玩耍并与Yii碰到一些问题Eager Loading vs 懒加载数据库查询。例如比较两个途径:Yii Eager载入中... loading懒惰载入中
$comment = Comment::model()->with(array('issue'=>array('condition'=>'project_ id='.$projectId)))->findAll();
2a上。
$comment = Comment::model()->findAll
2b。获取问题:
$issue = $comment->issues
(假设我们已经在评论模型中声明“问题”关系)。
我不确定第一种方法的优点。据我所知,第一个代码将只返回评论,但也运行获取问题查询(如2b代码)。但是,我看到(thouth不知道有更好的方式来充分利用“预先加载”),如果我想在第一个代码注释的问题,我也有运行这段代码:
3.
$comment ->issues
如果是这样,作为我的客人,我们必须使用Eager加载方法运行2个查询,因此它比“延迟加载”需要很长时间,因为它运行两次“获取问题查询”(第一次我们运行第一个代码,第二次运行第三个代码)。
因此,你能否证实我的意见,或者如果它错了,你能告诉我如何从Eager Loading方法中获得利用效率的所有问题。
优秀的解释,非常明确,易于“消化”。非常感谢Garcia!还有一个小问题:如果我在本地主机,上面提到的缓存是否存储在文件中?如果那是我能找到的地方? (我正在使用xampp 1.7.4)。谢谢! – Lebarn 2012-08-09 07:16:08
不,结果只是检索并缓存在内存中,直到脚本执行结束。如果您想查看检索的内容(以及检索方式),可以查看日志并获取SQL查询。 – acorncom 2012-08-09 09:50:59