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