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

तीन के साथ क्वेरी का चयन करें जहां स्थितियां धीमी हैं, लेकिन एक ही क्वेरी तीन में से दो के संयोजन के साथ जहां स्थितियां तेज हैं

मौजूदा SQL को दो भागों में विभाजित करने का प्रयास करें और देखें कि प्रत्येक के लिए निष्पादन समय क्या है। उम्मीद है कि यह आपको बताएगा कि धीमेपन के लिए कौन सा हिस्सा जिम्मेदार है:

भाग 1:

SELECT table_1.id
  FROM table_1
  LEFT JOIN table_2
    ON (table_1.id = table_2.id)
 WHERE table_1.col_condition_1 = 0
   AND table_1.col_condition_2 NOT IN (3, 4)
   AND table_2.id is NULL

और भाग 2 (यहां आंतरिक जुड़ाव पर ध्यान दें):

SELECT table_1.id
  FROM table_1
  JOIN table_2
    ON (table_1.id = table_2.id)
 WHERE table_1.col_condition_1 = 0
   AND table_1.col_condition_2 NOT IN (3, 4)
   AND table_1.date_col > table_2.date_col

मुझे उम्मीद है कि भाग 2 में अधिक समय लगेगा। इसमें मुझे लगता है कि date_coll पर टेबल_1 और टेबल_2 दोनों पर एक इंडेक्स मदद करेगा।

मुझे नहीं लगता कि कंपोजिट इंडेक्स आपके चयन में बिल्कुल भी मदद करेगा।

इसने कहा कि यह निदान करना कठिन है कि तीन स्थितियां एक साथ प्रदर्शन को बुरी तरह प्रभावित क्यों करेंगी। ऐसा लगता है कि यह आपके डेटा वितरण से संबंधित है। mySql के बारे में निश्चित नहीं है, लेकिन Oracle में उन तालिकाओं पर आंकड़े संग्रह करने से फर्क पड़ेगा।

आशा है कि यह मदद करता है।



  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:CASE/ELSE मान को ज्वाइन पैरामीटर के रूप में उपयोग करें

  2. मैं mysql का उपयोग करके आयात किए जा रहे CSV को कैसे ढूंढूं और बदलूं?

  3. एसक्यूएल:कुल योग को उप-चयन के रूप में बहुत धीमी गति से प्राप्त करना

  4. एक MySQL फ़ील्ड में अग्रणी और पिछली सफेद जगह को कैसे हटाएं?

  5. WHERE क्लॉज में कॉलम उपनाम