Index: modules/taxonomy/taxonomy.tokens.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/taxonomy/taxonomy.tokens.inc,v
retrieving revision 1.3
diff -u -p -r1.3 taxonomy.tokens.inc
--- modules/taxonomy/taxonomy.tokens.inc	24 Oct 2009 05:13:44 -0000	1.3
+++ modules/taxonomy/taxonomy.tokens.inc	4 Nov 2009 23:22:29 -0000
@@ -123,8 +123,11 @@ function taxonomy_tokens($type, $tokens,
           break;
 
         case 'node-count':
-          $sql = "SELECT COUNT (1) FROM {taxonomy_term_node} tn WHERE tn.tid = :tid";
-          $count = db_query($sql, array(':tid' => $term->tid))->fetchField();
+          $query = db_select('taxonomy_index');
+          $query->addExpression('COUNT (1)');
+          $query->condition('tid', $term->tid);
+          $query->addTag('term_node_count');
+          $count = $query->execute()->fetchField();
           $replacements[$original] = $count;
           break;
 
@@ -171,14 +174,21 @@ function taxonomy_tokens($type, $tokens,
           break;
 
         case 'term-count':
-          $sql = "SELECT COUNT (1) FROM {taxonomy_term_data} td WHERE td.vid = :vid";
-          $count = db_query($sql, array(':vid' => $vocabulary->vid))->fetchField();
+          $query = db_select('taxonomy_term_data');
+          $query->addExpression('COUNT (1)');
+          $query->condition('vid', $vocabulary->vid);
+          $query->addTag('vocabulary_term_count');
+          $count = $query->execute()->fetchField();
           $replacements[$original] = $count;
           break;
 
         case 'node-count':
-          $sql = "SELECT COUNT (1) FROM {taxonomy_term_node} tn LEFT JOIN {taxonomy_term_data} td ON tn.tid = td.tid WHERE td.vid = :vid";
-          $count = db_query($sql, array(':vid' => $vocabulary->vid))->fetchField();
+          $query = db_select('taxonomy_index', 'ti');
+          $query->addExpression('COUNT(DISTINCT ti.nid)');
+          $query->leftJoin('taxonomy_term_data', 'td', 'ti.tid = td.tid');
+          $query->condition('td.vid', $vocabulary->vid);
+          $query->addTag('vocabulary_node_count');
+          $count = $query->execute()->fetchField();
           $replacements[$original] = $count;
           break;
       }
