The cron is deadly to boards with many threads... the cron query returns every thread in the database, (the 500 "limit" applies to how many loop recursions are processed), where it should be limiting the query itself. Once that's fixed, we face a table scan - an INDEX should be added on taglist and autoskip:
Code:
ALTER TABLE " . TABLE_PREFIX . "thread
ADD INDEX taglist (taglist ( 1 ) , autoskip)
Since we only need to check if taglist is empty, indexing the entire MEDIUMTEXT value is unnecessary, so use a length of 1 to save space.