This is needed if we want to switch the SqlEntitiesWithoutTermFinder implementation to not make use of the wb_entity_per_page table. Changing the implementation to join against the page table by using a str replace on the entity id is less efficient, so we need to be sure we can restrict that in production to properties (where we only have a few thousand rows).
|· · ·|
|Resolved||hoo||T140891 Factor EntityPerPage::getEntitiesWithoutTerm out into it's own service|
|Open||None||T96040 Wikibase special pages (tracking)|
|Resolved||None||T160887 Wikibase\Repo\Store\Sql\SqlEntitiesWithoutTermFinder::getEntitiesWithoutTerm can take 19 hours to execute and it is run by the web requests user|
|Resolved||hoo||T147638 Introduce a setting for entity types supported by Special:EntitiesWithoutLabel/ Special:EntitiesWithoutDescription|
|· · ·|
- Mentioned In
- T168791: Remove "item" option from Special:EntitiesWithoutLabel etc.
T161631: [Task] Remove "all" option for Special:EntitiesWithout*"
T160887: Wikibase\Repo\Store\Sql\SqlEntitiesWithoutTermFinder::getEntitiesWithoutTerm can take 19 hours to execute and it is run by the web requests user
- Mentioned Here
- T140891: Factor EntityPerPage::getEntitiesWithoutTerm out into it's own service
Significant. The old query used an indexed integer column for joining, while the new uses a REPLACE() on a column for joining.
I can't see how we can optimize it more with the current wb_terms table structure.
Probably not, that's why we remove the support for Items. The new query might be so bad that it could be used in a harmful way if you have the possibility to trigger scanning multiple million rows.