Hi, I implemented and tested on my Gallery 3.0.4 the following modifications in order to allow:
function parents() from ORM_MPTT.php
function _build_relative_caches() from Item.phpto 
use the index items(type, left_ptr, right_ptr) otherwise you'll have a full scan on that huge items table despite ANY index you might have (enable, then check slow query log in mysql if you don't believe me).
  function parents() {
    return $this
      ->where("left_ptr", "<=", $this->left_ptr)
      ->where("right_ptr", ">=", $this->right_ptr)
      ->where("type", "=", "album")
      ->where("id", "<>", $this->id)
      ->order_by("left_ptr", "ASC")
      ->find_all();
  }
 private function _build_relative_caches() {
    $names = array();
    $slugs = array();
    foreach (db::build()
             ->select(array("name", "slug"))
             ->from("items")
             ->where("left_ptr", "=", $this->left_ptr)
             ->where("right_ptr", "=", $this->right_ptr)
             ->where("type", "=", "photo")
             ->or_where("left_ptr", "<=", $this->left_ptr)
             ->where("right_ptr", ">=", $this->right_ptr)
             ->where("type", "=", "album")
             ->where("id", "<>", 1)
             ->order_by("left_ptr", "ASC")
             ->execute() as $row) {
      // Don't encode the names segment
...
}
For my low resource Zyxel NSA310 this is huge improvement; I hope you'll see the value of these small changes,
BR,
Adrian