缓存mysql查询结果


cache mysql query result?

我在一个页面上使用了几个mysql查询,使用mysqli prepare语句从多个表中获取数据。

假设我在一个页面上有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();
}

谢谢。

如果SQL语句的处理成本较低,则可能不需要缓存它们。如果它们需要大量的计算或在非常大的数据集上运行,则可能需要缓存。请记住,缓存需要比SQL查询快。

在PHP中有几种缓存方法:
  • 文件缓存,序列化数据并将其存储到以查询的哈希命名的文件中。记住,获取缓存生命周期、并发访问等是很难的——所以考虑使用一个库来做这些,即使用PEAR的cache或Cache_Lite
  • memcached
  • 共享内存作为缓存,即使用APC函数,如apc_add

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