diff --git a/privatemsg_views.module b/privatemsg_views.module
index 1300a5f..5fd2594 100644
--- a/privatemsg_views.module
+++ b/privatemsg_views.module
@@ -143,36 +143,41 @@ function privatemsg_views_unread_page_count($uid, $threads) {
 
 /**
  * Count number of new private messages.
- * 
- * This is to fix "a feature" (1) of Privatemsg where it presents number of 
- * updated privatemsg threads as number of new messages (e.g. "new messages" 
+ *
+ * This is to fix "a feature" (1) of Privatemsg where it presents number of
+ * updated privatemsg threads as number of new messages (e.g. "new messages"
  * block, mailbox title).
- * 
+ *
  * (1) http://drupal.org/node/751906
- * 
+ *
  * We are not using Privatemsg query builder since we plan to get rid of it
  * completely eventually.
  */
 function _privatemsg_views_count_new_msg($uid) {
-  $query = array();
-  $query['select'] = array();
-  $query['where'] = array();
-  $query['groupby'] = array();
-    
-  $query['select'][] = "SELECT COUNT(DISTINCT pmi.mid) AS msg_count FROM {pm_index} pmi";
-     
-  if (module_exists('pm_block_user')) {
-    $query['select'][] = "LEFT JOIN {pm_message} m ON pmi.mid = m.mid";
-    $query['select'][] = "LEFT JOIN {pm_block_user} pmbu ON pmi.uid = pmbu.recipient AND m.author = pmbu.author";
-    $query['where'][] = "pmbu.recipient IS NULL";
+  static $counts = array();
+
+  if (!isset($counts[$uid])) {
+    $query = array();
+    $query['select'] = array();
+    $query['where'] = array();
+    $query['groupby'] = array();
+
+    $query['select'][] = "SELECT COUNT(DISTINCT pmi.mid) AS msg_count FROM {pm_index} pmi";
+
+    if (module_exists('pm_block_user')) {
+      $query['select'][] = "LEFT JOIN {pm_message} m ON pmi.mid = m.mid";
+      $query['select'][] = "LEFT JOIN {pm_block_user} pmbu ON pmi.uid = pmbu.recipient AND m.author = pmbu.author";
+      $query['where'][] = "pmbu.recipient IS NULL";
+    }
+
+    $query['where'][] = "pmi.deleted = 0";
+    $query['where'][] = "pmi.is_new = 1";
+    $query['where'][] = "pmi.uid = %d";
+    $query_string  = implode(' ', $query['select']);
+    $query_string .= ' WHERE (' . implode(') AND (', $query['where']) . ')';
+    $counts[$uid] =  (int) db_result(db_query($query_string, $uid));
   }
-  
-  $query['where'][] = "pmi.deleted = 0";
-  $query['where'][] = "pmi.is_new = 1";
-  $query['where'][] = "pmi.uid = %d";
-  $query_string  = implode(' ', $query['select']);
-  $query_string .= ' WHERE (' . implode(') AND (', $query['where']) . ')';
-  return (int) db_result(db_query($query_string, $uid));
+  return $counts[$uid];
 }
 
 /**
