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

MySQL संबंधित लेख क्वेरी में सुधार

सबसे पहले, कृपया क्षमा करें कि मैंने तालिका के नामों को थोड़ा बदलकर message कर दिया है और message_tag पठनीयता के लिए।

दूसरा, मैंने इसका परीक्षण नहीं किया। इसे एक निश्चित उत्तर के बजाय एक सूचक के रूप में प्रयोग करें।

क्वेरी दो उपश्रेणियों का उपयोग करती है, जो इतनी कुशल नहीं हो सकती हैं, शायद सुधार की गुंजाइश है। सबसे पहले, अंतरतम क्वेरी वर्तमान संदेश के टैग की तलाश करती है। फिर, मध्य क्वेरी उन संदेशों की तलाश करती है जो कम से कम एक सामान्य टैग के साथ चिह्नित हैं। समूहीकरण का उपयोग अद्वितीय संदेश_आईडी प्राप्त करने और उन्हें सामान्य टैगों की संख्या के आधार पर करने के लिए किया जाता है। अंत में, JOIN अतिरिक्त विवरण लोड करने और पुराने संदेशों को फ़िल्टर करने के लिए उपयोग किया जाता है।

आप देख सकते हैं कि मैंने '$xyz' . के बजाय प्रश्न चिह्नों का उपयोग किया है . यह परिवर्तनशील सामग्री से बचने की परवाह से बचने के लिए है।

SELECT message_id, title, date
FROM message
RIGHT JOIN (SELECT message_id, COUNT(*)
            FROM message_tag
            WHERE tag_id IN 
                (SELECT MT.tag_id FROM message_tag MT WHERE MT.message_id = ?)
            GROUP BY message_id
            ORDER BY COUNT(*) DESC) RELATED_MESSAGES
            ON message.message_id = RELATED_MESSAGES.message_id
WHERE date < ?


  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/SQLAlchemy के लिए गतिरोध पर पुनः प्रयास करें

  2. क्या किसी क्वेरी को एक रिकॉर्ड तक सीमित करने से प्रदर्शन में सुधार होता है

  3. MySQL में वर्तमान तिथि कैसे प्राप्त करें

  4. मैं किसी दिए गए पंक्ति संख्या से शुरू होने वाले MySQL में पंक्तियों का चयन कैसे कर सकता हूं?

  5. MySQL द्वारा लौटाए गए सरणी के लिए रूबी सॉर्ट_बी, स्ट्रिंग के रूप में स्वरूपित दिनांक