2011-04-24 173 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功能,即可以考虑使用,做它一个库,即

您也可能想缓存整个页面或部分页面,而不是单个查询。