diff --git a/facetapi.callbacks.inc b/facetapi.callbacks.inc
index e058fe7..f946959 100644
--- a/facetapi.callbacks.inc
+++ b/facetapi.callbacks.inc
@@ -134,9 +134,13 @@ function facetapi_get_max_date(array $facet) {
  */
 function facetapi_map_taxonomy_terms(array $values) {
   $map = array();
-  $terms = taxonomy_term_load_multiple($values);
-  foreach ($terms as $term) {
-    $map[$term->tid] = $term->name;
+  if(!empty($values)) {
+    $query = "SELECT tid, name 
+      FROM {term_data} WHERE tid IN (" . db_placeholders($values, 'int') . ")";
+    $result = db_query($query, $values);
+    while($term = db_fetch_object($result)) {
+      $map[$term->tid] = $term->name;
+    }
   }
   return $map;
 }
@@ -151,15 +155,17 @@ function facetapi_map_taxonomy_terms(array $values) {
  *   An associative array keyed by term ID to parent ID.
  */
 function facetapi_get_taxonomy_hierarchy(array $values) {
-  $query = "SELECT th.tid AS tid, th.parent AS parent
-    FROM {taxonomy_term_hierarchy} th
-    WHERE (th.parent > 0)
-    OR (th.tid IN " . db_placeholders($values) . "AND th.parent IN " . db_placeholders($values) . ")";
-  $result = db_query($query, array_merge($values, $values));
-
   $parents = array();
-  while($record = db_fetch_object($result)) {
-    $parents[$record->tid][] = $record->parent;
+  if(!empty($values)) {
+    $query = "SELECT th.tid AS tid, th.parent AS parent
+      FROM {term_hierarchy} th
+      WHERE (th.parent > 0)
+      OR (th.tid IN(" . db_placeholders($values) . ") AND th.parent IN(" . db_placeholders($values) . "))";
+    $result = db_query($query, array_merge($values, $values));
+
+    while($record = db_fetch_object($result)) {
+      $parents[$record->tid][] = $record->parent;
+    }
   }
   return $parents;
 }
