使用ORDER BY的MYSQL查询在CakePHP中运行非常慢

使用ORDER BY的MYSQL查询在CakePHP中运行非常慢,mysql,cakephp,cakephp-1.3,cakephp-2.0,Mysql,Cakephp,Cakephp 1.3,Cakephp 2.0,当我在Cakephp 2.0中使用paginate函数时,$options['order']=array('Model.name'=>'DESC');设置查询需要7000毫秒,而不设置订单则需要5毫秒,限制设置为只有10条记录。我使用WAMP服务器 你知道为什么这个查询要花这么长时间吗?唯一的区别是添加订单规则。“排序依据”字段已编制索引 解决了它: 问题是,我没有将所有相关的模型id字段(model_id)设置为索引,在这样做之后,查询将正常运行。您可以尝试在模型中设置顺序 var $orde

当我在Cakephp 2.0中使用paginate函数时,$options['order']=array('Model.name'=>'DESC');设置查询需要7000毫秒,而不设置订单则需要5毫秒,限制设置为只有10条记录。我使用WAMP服务器

你知道为什么这个查询要花这么长时间吗?唯一的区别是添加订单规则。“排序依据”字段已编制索引

解决了它:


问题是,我没有将所有相关的模型id字段(model_id)设置为索引,在这样做之后,查询将正常运行。

您可以尝试在模型中设置
顺序

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");
在您的查询中删除orderBy
,并将其中一个选项放在您的模型中,告诉我们它是否更快


如果在mysql CLI中运行完整的SQL查询,但前面加了
EXPLAIN
,那么输出是什么?将查询和数据库表中的一些代码张贴出来真是一团糟……如果要从表中选择所有字段,可以使用
myTable.
而不是列出所有字段。这是echo$this->元素的输出('sql_dump');+1,用于在您的问题之后查找并放置解决方案。:)它不会改变任何事情。SQL查询与此完全相同:(在CakePHP之外执行此查询时是否更快?比方说PHPMYADMIN?