简体   繁体   English

带有ORDER BY的MYSQL查询在CakePHP中运行非常慢

[英]MYSQL Query with ORDER BY runs very slow in CakePHP

When I use paginate function in Cakephp 2.0 with $options['order'] = array('Model.name' => 'DESC'); 当我在Cakephp 2.0中使用带有$ options ['order'] = array('Model.name'=>'DESC')的分页功能时; set query takes 7000ms compared to 5ms without order set up, limit is set to only 10 records. 设置查询需要7000ms的时间,而没有设置顺序的5ms则需要5ms,限制设置为仅10条记录。 I use WAMP server. 我使用WAMP服务器。

Any idea why does this query take so long? 知道为什么这个查询要花这么长时间吗? The only difference is adding order rule. 唯一的区别是添加订单规则。 "Ordered by" field is indexed. 索引“订购者”字段。

Solved it: 解决了:

The problem was that I didn't set all related models id fields (model_id) as indexes, after doing that the query runs as it should. 问题是在执行完查询后,我没有将所有相关的模型id字段(model_id)设置为索引。

You can try putting order in your Model. 您可以尝试在模型中下order

var $order = "field";
var $order = "Model.field";
var $order = "Model.field asc";
var $order = "Model.field ASC";
var $order = "Model.field DESC";
var $order = array("Model.field" => "asc", "Model.field2" => "DESC");

Delete-orderBy in your query and put one of these options in your Model and tell us is it faster. 在您的查询中使用Delete-orderBy并将这些选项之一放入模型中,并告诉我们它更快。

Source 资源

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM