I stedet for at placere Order By
ind i hovedforespørgslen, pak den, sådan:
SELECT * FROM (
... your query
) ORDER BY `created at`
Tag et kig på forespørgselsplanen. Du vil opdage, at i dit tilfælde udføres sorteringen på din tabel mtrt_items
før den ydre sammenføjning udføres. I den omskrivning, jeg delvist har leveret, anvendes sorteringen efter de ydre sammenføjninger og anvendes på et meget mindre sæt.
OPDATERING
Hvis vi antager, at LIMIT anvendes på et stort sæt (500.000?), ser det ud til, at du kan udføre toppen, før du udfører nogen af joinforbindelserne.
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