我正在使用CakePHP 2.x.当我检查sql转储时,我注意到它的“自动化”导致我的find()
之一运行几个单独的SELECT查询(然后可能将它们全部合并为一个漂亮的数据数组)。
这通常很好,但是我需要在一个包含多个连接的10K行的表上运行一个非常大的查询,这对于魔术来说太过分了,因为当我尝试通过{{1}构造它时查询在300秒后超时。但是当我使用JOINS手动编写等效查询时,它运行速度非常快。
我的理论是,无论需要PHP“魔法”来编织单独的查询,都会导致这个大型查询出现瓶颈。
更新:我忘了提及我已经知道find('all', $conditions)
使用这就是我如何发现减速来自PHP魔术。当我们以这种方式执行它时它会起作用,但是以两种不同的形式维护相同的查询感觉有点笨拙。这就是为什么我希望CakePHP提供一种替代方法,以便从多个较小的查询中构建大型查询。
答案 0 :(得分:0)
在这样的情况下,您查询具有10k记录的表,您不应该进行查找('all')而不限制关联,这些是您可以应用的一些策略:
由于您没有指定问题,我只是根据您遇到的问题为您提供了一般性的想法