Index: userpoints.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/userpoints/userpoints.install,v
retrieving revision 1.15.2.7
diff -u -p -r1.15.2.7 userpoints.install
--- userpoints.install	15 Jul 2010 21:52:34 -0000	1.15.2.7
+++ userpoints.install	9 Nov 2010 23:06:27 -0000
@@ -49,6 +49,7 @@ function userpoints_schema() {
     'indexes' => array(
       'last_update' => array('last_update'),
       'uid_tid' => array('uid', 'tid'),
+      'points' => array('points'),
     ),
   );
 
@@ -156,6 +157,9 @@ function userpoints_schema() {
       'status_expired_expiry' => array('status', 'expired', 'expirydate'),
       //Optional as in update_6011
       'changed' => array('changed'),
+      'uid' => array('uid'),
+      'approver_uid' => array('approver_uid'),
+      'points' => array('points'),
     )
   );
   return $schema;
@@ -281,3 +285,19 @@ function userpoints_update_6012() {
   db_add_index($ret, 'userpoints_txn', 'status_expired_expiry', array('status', 'expired', 'expirydate'));
   return $ret;
 }
+
+/**
+ * Add a few indexes to speed up contrib modules that query the `points` columns.
+ *
+ * Add index on points columns in userpoints and userpoints_txn, as well as on the two
+ * uid columns in userpoints_txn. No need to add a uid index in userpoints, as the
+ * compound uid_tid index is used instead when needed.
+ */
+function userpoints_update_6013() {
+  $ret = array();
+  db_add_index($ret, 'userpoints', 'points', array('points'));
+  db_add_index($ret, 'userpoints_txn', 'uid', array('uid'));
+  db_add_index($ret, 'userpoints_txn', 'approver_uid', array('approver_uid'));
+  db_add_index($ret, 'userpoints_txn', 'points', array('points'));
+  return $ret;
+}
