Page MenuHomePhabricator

Optimize query in Special Unusedcategories & Special Mostlinkedcategories by using category table
Closed, ResolvedPublic

Description

Author: nicdumz

Description:
proposed patch

Special:UnusedCategories && Special:MostLinkedCategories could benefit from the new "cat_pages" field from the new category table.

A patch modifying the SQL queries to use it is included : local testing, after a proper populateCategory.php, seemed successful.

I assumed that with that new indexed field, MostLinkedCategories was no more an expensive query : Please double-check me on this.

Cheers,
Nicolas.


Version: unspecified
Severity: enhancement

attachment category.diff ignored as obsolete

Details

Reference
bz13577

Event Timeline

bzimport raised the priority of this task from to Low.Nov 21 2014, 10:02 PM
bzimport set Reference to bz13577.
bzimport added a subscriber: Unknown Object (MLST).

Per IRC discussion; as written this may not work correctly for UnusedCategories, as there may not be a category table entry.

For MostLinkedCategories this should work perfectly, though!

Special:MostLinkedCategories patch updated and applied in r103759

Comment on attachment 4781
proposed patch

Marking obsolete as patch half applied, and other half is wrong

Not sure how much brions statement is still true...

On enwiki:

mysql> explain select cat_title from category where cat_pages = 0;
+----+-------------+----------+------+---------------+-----------+---------+-------+--------+-------+

idselect_typetabletypepossible_keyskeykey_lenrefrowsExtra

+----+-------------+----------+------+---------------+-----------+---------+-------+--------+-------+

1SIMPLEcategoryrefcat_pagescat_pages4const728557

+----+-------------+----------+------+---------------+-----------+---------+-------+--------+-------+
1 row in set (0.00 sec)

matmarex subscribed.

Mostlinkedcategories has been updated; Unusedcategories doesn't really need any fixes (it's not any worse to use the categorylinks table in that query if we're just checking for existence).