Web browser: ---
            Bug ID: 59988
           Summary: ActiveUsersPager query expensive when specifying a
                    starting rc_user_text value
           Product: MediaWiki
           Version: 1.23-git
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: Unprioritized
         Component: Special pages
    Classification: Unclassified
   Mobile Platform: ---

ActiveUsersPager generates a query like this when a user name is supplied as a
starting value:

SELECT /* IndexPager::buildQueryInfo (ActiveUsersPager) */ rc_user_text AS
user_name, rc_user_text, MAX(rc_user) AS user_id, COUNT(*) AS recentedits FROM
`recentchanges` FORCE INDEX (rc_user_text) WHERE (rc_user > 0) AND (rc_log_type
IS NULL OR rc_log_type != 'newusers') AND (rc_timestamp >= '?') AND (NOT EXISTS
(SELECT 1 FROM `ipblocks` WHERE (rc_user=ipb_user) AND ipb_deleted = '1' )) AND
(rc_user_text >= '?') GROUP BY rc_user_text ORDER BY rc_user_text LIMIT 101;

Without the rc_user_text >= '?' clause the query executes in seconds. With the
clause it takes minutes. Removing the FORCE INDEX doesn't help.

EXPLAIN from an enwiki slave:

*************************** 1. row ***************************
           id: 1
  select_type: PRIMARY
        table: recentchanges
         type: range
possible_keys: rc_user_text
          key: rc_user_text
      key_len: 273
          ref: NULL
         rows: 4013039  <-- eek!
        Extra: Using index condition; Using where
*************************** 2. row ***************************
           id: 2
        table: ipblocks
         type: ref
possible_keys: ipb_user
          key: ipb_user
      key_len: 4
          ref: enwiki.recentchanges.rc_user
         rows: 1
        Extra: Using where
2 rows in set (0.25 sec)

The functionality to specify a starting rc_user_text value should be disabled,
or the page redesigned.

You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.
Wikibugs-l mailing list

Reply via email to