【发布时间】:2016-06-27 14:02:42
【问题描述】:
我有 2 个表(用户和技术),我需要在第三个控制器中分别从它们检索数据。
我可以使用 loadmodel 和 find() 来做到这一点,然后通过 $this->set() 设置要查看的数据,但是这样做网站会变得非常慢 > 70 秒,当我尝试只检索一个时它运行得很快。
所以基本上我需要优化我的查询并加速我的数据库
这是我的代码。
$users = $this->loadModel('Users');
$datas=$users->find('all')->select(['id','phone', 'first_name','last_name','birthday','email','website', 'address', 'resume', 'cv_url'])->where(['id' => 1])->bufferResults(false)->ToArray();
$technologies = $this->loadModel('Technologies');
$technologies=$technologies->find('all')->select(['id', 'name', 'slug', 'image', 'exp', 'exp_perc'])->bufferResults(false)->ToArray();
$this->set(compact('datas','technologies'));
如您所见,我只有 2 个查询,但在调试中显示 10 个,TABLE_SCHEMA 耗时 35322 毫秒,调用了 2 次 (35322*2)
欢迎提出任何建议。
【问题讨论】:
-
我建议您在问题中添加更多信息,因为它是一个不可重现的问题,因此您可能不会得到太多帮助。比如,您使用的是什么 DBMS?生成的查询是什么样的?正在检索多少条记录?究竟花在哪里(使用分析器来弄清楚)?等等……
标签: cakephp model-view-controller cakephp-3.2