I did a search of the code for that query, and it looks like it's from archive/index.php. It also looks like you must have hundreds of thousands of threads in one forum, which is what I believe is causing the problem. The query is doing an "order by dateline" and there's an index on dateline for the thread table, which would be good, except that there's no index by the open or visible columns which I think means that all rows have to be read in order to find the right 250 rows to return. In short, I think it's just not optimized for having that many threads in a forum.
But if your forum is like ours (not vbulletin.org, but the one I help run), then you probably have spiders constantly crawling the entire site. So maybe a solution would be to try the
"Ban Spiders by User Agent" mod to try to eliminate the unwanted spiders.