Вместо да поставяте Order By
в основната заявка, обвийте я, така:
SELECT * FROM (
... your query
) ORDER BY `created at`
Разгледайте плана на заявката. Ще откриете, че във вашия случай сортирането се извършва на вашата таблица mtrt_items
преди да се извърши външното свързване. В пренаписването, което частично предоставих, сортирането се прилага след външните съединения и се прилага върху много по-малък набор.
АКТУАЛИЗИРАНЕ
Ако приемем, че LIMIT се прилага към голям набор (500 000?), изглежда, че можете да изпълните горната част, преди да извършите някое от присъединяванията.
SELECT * from (
SELECT
`id`, ... `created_at`, ...
ORDER BY `i`.`created_at` DESC
LIMIT 100 OFFSET 0) as i
LEFT JOIN `mtrt_users` AS `u` ON i.user_id =u.id
LEFT JOIN `twt_tweets_content` AS `t` ON t.id =i.id
LEFT JOIN `twt_users` AS `tu` ON t.user_id = tu.id
INNER JOIN `mtrt_items_searches` AS `r` ON i.id =r.item_id
INNER JOIN `mtrt_searches` AS `s` ON s.id =r.search_id
INNER JOIN `mtrt_searches_groups` AS `sg` ON sg.search_id =s.id
INNER JOIN `mtrt_search_groups` AS `g` ON sg.group_id =g.id
INNER JOIN `account_clients` AS `c` ON g.client_id =c.id
GROUP BY i.id