2011-04-24 170 views
0

我在頁面上使用多個mysql查詢來使用mysqli prepare語句從多個表中獲取數據。緩存mysql查詢結果?

可以說我有一個頁面上的數據庫表中有20個查詢。由於查詢太多,我想通過將結果存儲在緩存中幾分鐘來提高性能?這是個好主意嗎?如果是的話,我可以如何使用緩存存儲結果,例如查詢以下內容?

$city = "Amersfoort"; 

if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) { 
    $stmt->bind_param("s", $city); 
    $stmt->execute(); 
    $stmt->bind_result($district); 
    $stmt->fetch(); 
    printf("%s is in district %s\n", $city, $district); 
    $stmt->close(); 
} 

謝謝。

+0

不是mysql查詢緩存(http://dev.mysql.com/doc/refman/5.1/en/query-cache.html)是否符合您的要求。 – zerkms 2011-04-24 23:34:42

回答

1

如果SQL語句在處理中很便宜,您可能不需要緩存它們。如果他們需要大量計算或運行在非常大的數據集上,則可能需要緩存。請記住,緩存需要比SQL查詢更快。

有幾種方法在PHP緩存:

  • 文件緩存,serialzing數據並存入一個名爲像查詢的散列文件。請記住,讓緩存生存,併發訪問等硬 - 所以梨的Cache或​​
  • memcached
  • 共享內存作爲高速緩存,通過使用像apc_add
APC功能,即可以考慮使用,做它一個庫,即

您也可能想緩存整個頁面或部分頁面,而不是單個查詢。