2013-05-20 47 views
-1

我試圖重寫一些本地mysql函數來轉換爲PDO功能。但是,我看到了巨大的性能影響,現在我的平常查詢需要2.8秒,從0.14秒增加到頁面上的數據加載。這是我原來的sql查詢,這將作爲一個通用函數來檢索單行信息。請注意,該頁面正在生成大約100行。PDO與MySQL函數

protected function query_s($table, $col, $where_col , $where, $return_col) 
{ 
    $SQL = "SELECT $col FROM ".$table." WHERE $where_col='".$where."' LIMIT 1"; 
    try 
    { 
     if(!mysql_query($SQL)) 
     { 
      throw new Exception("MySQL error: ". mysql_error()); 
     } 
     else 
     { 
      $data = mysql_fetch_array($SQL); 
      return $data[$return_col]; 
     } 
    } 
    catch(Exception $e) 
    { 
     echo "Error <p> ".$e->getMessage()." at line ".$e->getLine() ; 
    } 
} 

我不確定是什麼東西放慢了速度。有任何想法嗎?

+5

您可以在對PDO進行更改後顯示版本(即慢版本)嗎?對於這兩種情況,您是否也可以對服務器執行實際的查詢(包括where子句)? –

+0

表格有多少行? Where子句字段是否被索引?它不僅僅是PDO概念,可以加快速度 –

+0

表中有超過3000行(我只顯示100行),以及JOIN子句和其他類方法以從其他表中檢索特定數據。 我看了這個索引方面,它很好。我將在分解完課程後嘗試獲取一些代碼以顯示一個實際示例。 – Dimitri

回答

0

您的原始查詢不是真實的代碼,因爲它無法工作。

所以,我想你提到的緩慢的原因可能是同一起源 - 某種簡單的錯誤。編寫代碼或問題時,您需要更加細心。

確保每個應用程序只連接一次並運行相當數量的查詢。

另請注意,您處理異常的方式是錯誤的。你不應該捕捉並回應。

+0

我想出了問題所在。自從我爲PDO編寫新代碼後,我打開了太多的連接。另外,您會如何處理異常? – Dimitri

+1

只是不抓住他們 –