Зачем это извращение? База должна работать и отрабатывать свое, нужен баланс количества/сложность, один запрос может положить базу, 1000 запросов могут отработать за 0.5 сек.
Чтобы убрать повторы одних и тех же запросов можно обойтись чем-то таким:
public function query($sql) {
$cached = strtolower(substr(ltrim($sql), 0, 6)) == 'select';
// not cached select from a variable
if ($cached) {
$cached = (false !== stripos($sql, 'from'));
}
if ($cached) {
$key = md5($sql);
if (isset($this->cache[$key])) {
$query = $this->cache[$key];
} else {
$query = $this->driver->query($sql);
$this->cache[$key] = $query;
}
} else {
$query = $this->driver->query($sql);
}
return $query;
}
Ну, если без кэшей, тогда только html5 history + ajax загрузка конкретного блока, того же контента, но и тогда одним запросом не обойтись.