Моя доктрина действительно медленная.Простой запрос и одна секунда, чтобы получить результат - PullRequest
2 голосов
/ 21 апреля 2011

Вот мои настройки:
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 эхо, чтобы показать вам, сколько времени потребуется для выполнения запроса.

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)

Ответы [ 3 ]

2 голосов
/ 21 апреля 2011
0 голосов
/ 21 апреля 2011

Просто из любопытства вы пытались выполнить RawSQL Query?У нас была проблема, похожая на эту, и она оказалась проблемой DNS.Несмотря на то, что все должно было быть локальным, сервер apache выходил на внешний уровень, чтобы по какой-то причине разрешить адрес mysql.

0 голосов
/ 21 апреля 2011

Прежде всего, ваш код не кажется неправильным или чем-то еще.


В целом, однако, ваш SQL-запрос обычно будет выглядеть так:

select *
from Ordering
where client_id = 123456

Это означает, что установка индекса для столбца client_id , вероятно, должна помочь - много, если в этой таблице много строк.


Пара релевантных ссылок, о которых:

...