EXPLAIN SELECT /* MessageCache::loadFromDB(en)-small X.Y.Z.Ö */ rev_id,rev_page,rev_timestamp,rev_minor_edit,rev_deleted,rev_len,rev_parent_id,rev_sha1,comment_rev_comment.comment_text AS `rev_comment_text`,comment_rev_comment.comment_data AS `rev_comment_data`,comment_rev_comment.comment_id AS `rev_comment_cid`,actor_rev_user.actor_user AS `rev_user`,actor_rev_user.actor_name AS `rev_user_text`,temp_rev_user.revactor_actor AS `rev_actor`,page_namespace,page_title,page_id,page_latest,page_is_redirect,page_len,user_name FROM `bw_revision` JOIN `bw_revision_comment_temp` `temp_rev_comment` ON ((temp_rev_comment.revcomment_rev = rev_id)) JOIN `bw_comment` `comment_rev_comment` ON ((comment_rev_comment.comment_id = temp_rev_comment.revcomment_comment_id)) JOIN `bw_revision_actor_temp` `temp_rev_user` ON ((temp_rev_user.revactor_rev = rev_id)) JOIN `bw_actor` `actor_rev_user` ON ((actor_rev_user.actor_id = temp_rev_user.revactor_actor)) JOIN `bw_page` ON ((page_id = rev_page)) LEFT JOIN `bw_user` ON ((actor_rev_user.actor_user != 0) AND (user_id = actor_rev_user.actor_user)) WHERE page_is_redirect = '0' AND page_namespace = '8' AND (page_title NOT LIKE '%/%' ESCAPE '`' ) AND (page_len <= 10000) AND (page_latest = rev_id): *** row 1 *** table: actor_rev_user type: ALL possible_keys: PRIMARY key: NULL key_len: NULL ref: NULL rows: 20899 Extra: NULL *** row 2 *** table: bw_user type: eq_ref possible_keys: PRIMARY key: PRIMARY key_len: 4 ref: translatewiki_net.actor_rev_user.actor_user rows: 1 Extra: Using where *** row 3 *** table: temp_rev_user type: ref possible_keys: PRIMARY,revactor_rev,actor_timestamp key: actor_timestamp key_len: 8 ref: translatewiki_net.actor_rev_user.actor_id rows: 116 Extra: Using index *** row 4 *** table: bw_revision type: eq_ref possible_keys: PRIMARY,rev_id,page_timestamp,page_user_timestamp key: rev_id key_len: 4 ref: translatewiki_net.temp_rev_user.revactor_rev rows: 1 Extra: NULL *** row 5 *** table: bw_page type: eq_ref possible_keys: PRIMARY,name_title,page_len,page_redirect_namespace_len key: PRIMARY key_len: 4 ref: translatewiki_net.bw_revision.rev_page rows: 1 Extra: Using where *** row 6 *** table: temp_rev_comment type: ref possible_keys: PRIMARY,revcomment_rev key: PRIMARY key_len: 4 ref: translatewiki_net.temp_rev_user.revactor_rev rows: 1 Extra: Using index *** row 7 *** table: comment_rev_comment type: eq_ref possible_keys: PRIMARY key: PRIMARY key_len: 8 ref: translatewiki_net.temp_rev_comment.revcomment_comment_id rows: 1 Extra: NULL
Description
Description
Details
Details
Subject | Repo | Branch | Lines +/- | |
---|---|---|---|---|
MessageCache: Add STRAIGHT_JOIN to avoid planner oddness | mediawiki/core | master | +16 -1 |
Event Timeline
Comment Actions
For comparison, this is the query with SCHEMA_COMPAT_READ_OLD:
MariaDB [translatewiki_net]> EXPLAIN SELECT rev_id,rev_page,rev_timestamp,rev_minor_edit,rev_deleted,rev_len,rev_parent_id,rev_sha1,comment_rev_comment.comment_text AS `rev_comment_text`,comment_rev_comment.comment_data AS `rev_comment_data`,comment_rev_comment.comment_id AS `rev_comment_cid`,rev_user,rev_user_text,NULL AS `rev_actor`,page_namespace,page_title,page_id,page_latest,page_is_redirect,page_len,user_name FROM `bw_revision` JOIN `bw_revision_comment_temp` `temp_rev_comment` ON ((temp_rev_comment.revcomment_rev = rev_id)) JOIN `bw_comment` `comment_rev_comment` ON ((comment_rev_comment.comment_id = temp_rev_comment.revcomment_comment_id)) JOIN `bw_page` ON ((page_id = rev_page)) LEFT JOIN `bw_user` ON ((rev_user != 0) AND (user_id = rev_user)) WHERE page_is_redirect = '0' AND page_namespace = '8' AND (page_title NOT LIKE '%/%' ESCAPE '`' ) AND (page_len <= 10000) AND (page_latest = rev_id)\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: bw_page type: ref possible_keys: PRIMARY,name_title,page_len,page_redirect_namespace_len key: name_title key_len: 4 ref: const rows: 3057427 Extra: Using index condition; Using where *************************** 2. row *************************** id: 1 select_type: SIMPLE table: bw_revision type: eq_ref possible_keys: PRIMARY,rev_id,page_timestamp,page_user_timestamp key: PRIMARY key_len: 8 ref: translatewiki_net.bw_page.page_id,translatewiki_net.bw_page.page_latest rows: 1 Extra: *************************** 3. row *************************** id: 1 select_type: SIMPLE table: bw_user type: eq_ref possible_keys: PRIMARY key: PRIMARY key_len: 4 ref: translatewiki_net.bw_revision.rev_user rows: 1 Extra: Using where *************************** 4. row *************************** id: 1 select_type: SIMPLE table: temp_rev_comment type: ref possible_keys: PRIMARY,revcomment_rev key: PRIMARY key_len: 4 ref: translatewiki_net.bw_page.page_latest rows: 1 Extra: Using index *************************** 5. row *************************** id: 1 select_type: SIMPLE table: comment_rev_comment type: eq_ref possible_keys: PRIMARY key: PRIMARY key_len: 8 ref: translatewiki_net.temp_rev_comment.revcomment_comment_id rows: 1 Extra: 5 rows in set (0.00 sec)
Comment Actions
Change 532433 had a related patch set uploaded (by Anomie; owner: Anomie):
[mediawiki/core@master] MessageCache: Add STRAIGHT_JOIN to avoid planner oddness
Comment Actions
Change 532433 merged by jenkins-bot:
[mediawiki/core@master] MessageCache: Add STRAIGHT_JOIN to avoid planner oddness