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

MySQL:ऐसी पंक्तियाँ ढूँढना जो किसी रिश्ते में भाग नहीं लेती हैं

आपके द्वारा दिखाए गए सबक्वायरी विधि का उपयोग किए बिना इस क्वेरी को करने का एक सामान्य तरीका यहां दिया गया है। यह शामिल होने के आधार पर समाधान देखने के लिए @ गोडेके के अनुरोध को पूरा कर सकता है।

SELECT * 
FROM movies m
 LEFT OUTER JOIN seen s
 ON (m.id = s.movie_id AND s.user_id = 123)
WHERE s.movie_id IS NULL;

हालाँकि, डेटाबेस के अधिकांश ब्रांडों में यह समाधान सबक्वेरी समाधान से भी बदतर प्रदर्शन कर सकता है। दोनों प्रश्नों का विश्लेषण करने के लिए EXPLAIN का उपयोग करना सबसे अच्छा है, यह देखने के लिए कि आपकी स्कीमा और डेटा को देखते हुए कौन बेहतर करेगा।

यहाँ सबक्वेरी समाधान पर एक और भिन्नता है:

SELECT * 
FROM movies m
WHERE NOT EXISTS (SELECT * FROM seen s 
                  WHERE s.movie_id = m.id 
                    AND s.user_id=123);

यह एक सहसंबद्ध उपश्रेणी है, जिसका मूल्यांकन बाहरी क्वेरी की प्रत्येक पंक्ति के लिए किया जाना चाहिए। आमतौर पर यह महंगा होता है, और आपकी मूल उदाहरण क्वेरी बेहतर होती है। दूसरी ओर, MySQL में "NOT EXISTS " अक्सर "column NOT IN (...) . से बेहतर होता है "

दोबारा, आपको प्रत्येक समाधान का परीक्षण करना चाहिए और सुनिश्चित करने के लिए परिणामों की तुलना करना चाहिए। प्रदर्शन को मापे बिना कोई समाधान चुनना समय की बर्बादी है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. गंभीर त्रुटि:किसी सदस्य फ़ंक्शन क्वेरी को कॉल करें () PHP क्लास

  2. लोकलहोस्ट (xampp) में MySQL सख्त मोड को कैसे चालू/बंद करें?

  3. MySQL में लेन-देन-सुरक्षित SEQUENCE का अनुकरण करना

  4. क्या MySQL व्यू हमेशा फुल टेबल स्कैन करता है?

  5. सबमिट बटन के साथ डेटाबेस डेटा अपडेट करें