Mysql. Нужно ли ставить индексы на поля которые участвуют в ORDER BY?
Тут всё дело с условием (sticky > 0), именно оно мешает использовать индекс.
Возможно, имеет смысл сделать sticky enum('no', 'yes') и sticky_timestamp и использовать именно данный sticky.
можно создать cron job (что то похожее на Oracle Materialized View), который каждые десять минут будет делать пересчет тех обяхвлений которые в топе и сохранять препросчитанные ид в другую таблицу.

CREATE TABLE `top_topics` (
 `blurb_topics_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`blurb_topics_id`),
}

Затем просто соединять с оригинальной таблицей.