https://bugzilla.wikimedia.org/show_bug.cgi?id=59988
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
Assignee: [email protected]
Reporter: [email protected]
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
select_type: DEPENDENT SUBQUERY
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
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l