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

MySql में OR WHERE स्टेटमेंट का उपयोग करने से धीमी गति से निष्पादन होता है

हां, OR अक्सर एक प्रदर्शन-हत्यारा होता है। UNION . करना एक सामान्य समाधान है . आपके उदाहरण के लिए:

SELECT  *
    FROM  `posts`
    LEFT JOIN  `teams_users`
               ON (teams_users.team_id=posts.team_id
              AND  teams_users.user_id='7135')
    WHERE  (teams_users.status='1')
UNION DISTINCT
SELECT  *
    FROM  `posts`
    LEFT JOIN  `teams_users`
               ON (teams_users.team_id=posts.team_id
              AND  teams_users.user_id='7135')
    WHERE  (posts.user_id='7135');

यदि आप सुनिश्चित हैं कि डुप्लिकेट नहीं हैं, तो तेज़ी से बदलें UNION ALL

यदि आप लापता team_users . के लिए मछली नहीं पकड़ रहे हैं पंक्तियाँ, JOIN . का उपयोग करें इसके बजाय LEFT JOIN

यदि आपको ORDER BY need की आवश्यकता है , कुछ माता-पिता जोड़ें:

( SELECT ... )
UNION ...
( SELECT ... )
ORDER BY ...

अन्यथा, ORDER BY केवल दूसरे SELECT . पर लागू होगा . (यदि आपको 'पेजिनेशन' की भी आवश्यकता है, तो देखें मेरा ब्लॉग ।)

कृपया ध्यान दें कि आपको LIMIT . की भी आवश्यकता हो सकती है कुछ विशेष परिस्थितियों में।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सुंदर लिंक के लिए .htaccess का उपयोग कैसे करें

  2. रूबी ऑन रेल्स को दूरस्थ mysql डेटाबेस से कनेक्ट नहीं कर सकता

  3. mySQL:इंडेक्स टेबल पर utf8 चारसेट और डुप्लीकेट की एरर

  4. पूर्ण जॉइन सिंटैक्स में अज्ञात कॉलम त्रुटि

  5. स्प्रिंग डेटा समझ में नहीं आता @ कॉलम नाम