diff --git a/user_reference/user_reference.module b/user_reference/user_reference.module
index 381d155..81e2f82 100644
--- a/user_reference/user_reference.module
+++ b/user_reference/user_reference.module
@@ -295,27 +295,19 @@ function _user_reference_get_user_names($uids, $known_titles = array()) {
   // Save titles we receive.
   $titles += $known_titles;
 
-  // Collect nids to retrieve from database.
-  $uids_query = array();
-  foreach ($uids as $uid) {
-    if (!isset($titles[$uid])) {
-      $uids_query[] = $uid;
+  $uids = array_combine($uids, $uids);
+
+  // Collect uids to retrieve from database.
+  $new_uids = array_diff_key($uids, $titles);
+  if ($new_uids) {
+    $accounts = user_load_multiple($new_uids);
+    foreach ($accounts as $uid => $account) {
+      $titles[$uid] = entity_label('user', $account);
     }
   }
-  if ($uids_query) {
-    $query = db_select('users', 'u')
-      ->fields('u', array('uid', 'name'))
-      ->condition('u.uid', $uids);
-    $titles += $query->execute()->fetchAllKeyed();
-  }
-
-  // Build the results array.
-  $return = array();
-  foreach ($uids as $uid) {
-    $return[$uid] = isset($titles[$uid]) ? $titles[$uid] : '';
-  }
 
-  return $return;
+  // Return the results array.
+  return array_intersect_key($titles, $uids);
 }
 
 /**
