【问题标题】:MYSQL Query with ORDER BY runs very slow in CakePHP使用 ORDER BY 的 MYSQL 查询在 CakePHP 中运行速度非常慢
【发布时间】:2012-09-09 17:25:21
【问题描述】:

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

知道为什么这个查询需要这么长时间吗?唯一的区别是添加订单规则。 “Ordered by”字段已编入索引。

解决了:

问题是我没有将所有相关的模型 id 字段 (model_id) 设置为索引,之后查询按应有的方式运行。

【问题讨论】:

  • 如果您在 mysql CLI 中运行完整的 SQL 查询,但前面带有 EXPLAIN,那么输出是什么?
  • 发布您的一些查询代码和数据库表
  • 什么乱七八糟...如果您要从表中选择所有字段,您可以使用myTable.* 而不是列出所有字段。
  • 这是 echo $this->element('sql_dump'); 的输出
  • +1 用于在您的问题之后找到解决方案。 :)

标签: mysql cakephp cakephp-1.3 cakephp-2.0


【解决方案1】:

您可以尝试将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 在您的查询中,并将这些选项之一放入您的模型中,并告诉我们它是否更快。

Source

【讨论】:

  • 它不会改变任何东西。 SQL Query 完全一样 :(
  • 在 CakePHP 之外执行此查询是否更快?比方说 PHPMYADMIN?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
相关资源
最近更新 更多