【问题标题】:My doctrine is Really Slow. Simple query and one second to get the result我的教义真的很慢。简单查询,一秒出结果
【发布时间】:2011-04-21 05:54:02
【问题描述】:

这是我的设置:
Windows Server 2008 R2
MySql 5.1.562
PHP 5.3.2
教义 1.2

任何人都知道为什么我的查询需要大约一秒钟来执行一个简单的查询。

echo date("Y-m-d H:i:s", time()) ."::::::" . microtime(true)."<br />";

             $q = Doctrine_Query::create()
            ->from("Ordering")
            ->where("client_id = ?",array($_SESSION["UserID"]));

            $ResProduct = $q->execute();

echo date("Y-m-d H:i:s", time()) ."::::::" . microtime(true)."<br />";  

这是 2 echo 的结果,显示执行查询需要多长时间。

2011-04-21 01:48:24::::::1303364904.8051
2011-04-21 01:48:25::::::1303364905.8418

另外,数据库中没有数据。

编辑
我直接在mysql控制台执行查询,很快得到结果

mysql> select * from Ordering where client_id = 2;
+----+------------+-------+------+-----------+
| id | product_id | price | qty  | client_id |
+----+------------+-------+------+-----------+
|  7 |          1 |  0.89 |   20 |         2 |
+----+------------+-------+------+-----------+
1 row in set  (0.00 sec)

【问题讨论】:

  • 喜欢标题“我的学说真的很慢”... ;-D
  • 我不明白你为什么在 php 5.3.2 上使用 microtime_float()。使用microtime(true)
  • 谢谢,我不知道 microtime(true)。不错:)

标签: php mysql performance doctrine-1.2


【解决方案1】:

【讨论】:

  • 这里的人是大师 :) 非常感谢@FractalizeR。你拯救了我的夜晚。非常感谢。 39 MS 执行相同的查询,但在 my.ini 文件中使用 skip-name-resolve skip-host-cache。
【解决方案2】:

首先,您的代码似乎没有错误之类的。


不过,基本上,您的 SQL 查询通常如下所示:

select *
from Ordering
where client_id = 123456

这意味着client_id 列上设置索引 可能会有所帮助——如果该表中有很多行的话。


几个相关的链接,关于那个:

【讨论】:

  • 我已经有关于 client_id 的索引。正如我在帖子中所说,数据库中还没有数据。
【解决方案3】:

只是出于好奇,您是否尝试过 RawSQL 查询?我们遇到了与此类似的问题,最终成为 DNS 问题。即使一切都应该是本地主机,但由于某种原因,apache 服务器正在外部解析到 mysql 的地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多