我在一个页面上使用了几个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
您还可能希望缓存整个页面或部分页面,而不是单个查询。