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

INNER JOIN + ORDER BY के साथ फाइल सॉर्ट करने से बचें

आप सभी फ़िल्टरिंग कार्य को एक सबक्वेरी में ले जाकर MySQL ऑप्टिमाइज़र की मदद कर सकते हैं जो केवल इंडेक्स तक पहुंचता है (इंडेक्स में हेरफेर करना आमतौर पर अन्य डेटा में हेरफेर करने की तुलना में बहुत तेज़ होता है), और बाकी डेटा को सबसे बाहरी क्वेरी में लाकर:

SELECT posts.post_id,
       posts.post_b_id,
       posts.post_title,
       posts.post_cont,
       posts.thumb,
       posts.post_user,
       boards.board_title_l,
       boards.board_title
FROM   (SELECT post_id
        FROM   posts
               JOIN follow
                 ON posts.post_b_id = follow.board_id
        WHERE  follow.user_id = 1
        ORDER  BY post_id DESC
        LIMIT  10) sq
       JOIN posts
         ON posts.post_id = sq.post_id
       JOIN boards
         ON boards.board_id = posts.post_b_id

ध्यान दें कि मैं ORDER BY posts.post_id DESC को छोड़ देता हूं बाहरी क्वेरी से, क्योंकि आमतौर पर MySQL क्वेरी का उपयोग करके सॉर्ट करने के बजाय आपके कोड में अंतिम परिणाम को सॉर्ट करना तेज़ होता है (MySQL अक्सर filesort का उपयोग करता है) उसके लिए)।

पी.एस. आप follow . में अद्वितीय कुंजी को बदल सकते हैं प्राथमिक कुंजी के साथ तालिका।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लोकलहोस्ट सर्वर के साथ एंड्रॉइड डिवाइस कनेक्शन

  2. MySQL केवल चालू माह के भीतर?

  3. MySQL गलत डेटाटाइम मान:'0000-00-00 00:00:00'

  4. MySQL अंतराल मिनट

  5. php . में एक कॉलम के रूप में mysql पंक्ति से डेटा प्रदर्शित करें