Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySql क्वेरी को ऑप्टिमाइज़ करें:ऑर्डर करते समय बहुत धीमा

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL अद्यतन एक रिकॉर्ड का पहला उदाहरण

  2. एसक्यूएल स्वयं क्वेरी में शामिल हों? श्रेणियां उप श्रेणियां कैसे प्राप्त करें?

  3. एकाधिक उपयोगकर्ता इनपुट के आधार पर MySQL क्वेरी का चयन करें

  4. डीबी पीएचपी में प्रविष्टियों की संख्या

  5. अक्टूबरसीएमएस:दोतरफा दोस्ती का रिश्ता कैसे बनाए रखें?