2011-04-21 17 views
2

這裏是我的設置:
的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) 
+0

熱愛標題*「我的學說真的很慢」* ...; -D – deceze 2011-04-21 05:59:42

+0

我不明白爲什麼在php 5.3.2上使用'microtime_float()'。使用'microtime(true)'。 – 2011-04-21 06:04:13

+0

Thx,我不知道microtime(true)。尼斯:) – 2011-04-21 06:06:26

回答

2
+0

這裏的傢伙是一個主人:)非常感謝@FractalizeR。你拯救我的夜晚。非常感謝。39 MS在my.ini文件中執行相同的查詢,但使用skip-name-resolve skip-host-cache。 – 2011-04-21 06:40:59

+0

@ Jean-Francois歡迎;) – 2011-04-21 08:30:51

0

首先,你的代碼看起來錯誤或者什麼都不。


基本上,雖然,你的SQL查詢通常會是這樣的:

select * 
from Ordering 
where client_id = 123456 

這意味着設置索引的列client_id可能應該幫助 - 不少,如果有很多該表中的行。


一對夫婦的相關鏈接,有關:

+0

我已經有client_id索引。正如我在文章中所說的,數據庫中還沒有數據。 – 2011-04-21 06:05:47

0

只是出於好奇你有沒有試過RawSQL查詢?我們遇到類似的問題,最終成爲DNS問題。即使所有東西都應該是localhost,但由於某些原因,apache服務器會外部解析到mysql的地址。