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

MySQL में एक सबक्वेरी को कैश/पुन:उपयोग करें

देखें कि क्या EXPLAIN EXTENDED कहते हैं।

अगर यह DEPENDENT SUBQUERY says कहता है या UNCACHEABLE SUBQUERY , तो इसका हर बार उपयोग किए जाने पर इसका पुनर्मूल्यांकन किया जाएगा।

ऐसा तब होता है जब सबक्वेरी सत्र चर का उपयोग करती है या एक सहसंबद्ध सबक्वेरी है।

अगर ऐसा नहीं होता है, तो संभवत:इसे कैश कर लिया जाएगा।

यदि आपके मामले में सबक्वेरी कैश नहीं की जाएगी, तो इसका प्रत्येक UNION में पुनर्मूल्यांकन किया जाएगा एड सेट।

हालाँकि, आप सबक्वेरी बहुत जटिल प्रतीत होते हैं। आप इसका उपयोग क्यों नहीं करते:

SELECT id
FROM   playlist_program_map ppm, programs p
WHERE  ppm.playlist_id = 181
       AND p.id = ppm.program_id
       AND submitter_id = 32
       AND feed_id = 2478

यदि आपके पास playlist_program_map (playlist_id) . पर एक अनुक्रमणिका है , यह प्रश्न एक आकर्षण की तरह काम करना चाहिए।

क्या आप कृपया मुझे दो और बातें बता सकते हैं:

  1. playlist_program_map में कितनी पंक्तियाँ हैं और कितने DISTINCT playlist_id मान मौजूद हैं?
    • programs में कितनी पंक्तियाँ होती हैं और कितने DISTINCT submitter_id, feed_id जोड़े हैं?

आपकी टिप्पणी से मैं यह निष्कर्ष निकाल सकता हूं कि 10 . हैं programs प्रति playlist औसतन, और 200 programs प्रति (submitter, feed) जोड़ा। इसका मतलब है कि playlist_program_map . पर आपकी अनुक्रमणिका (submitter, feed) . की तुलना में अधिक चयनात्मक है , और playlist_program_map शामिल होने में अग्रणी होना चाहिए।

आपके मामले में पूर्ण पाठ अनुक्रमणिका भी बहुत चयनात्मक नहीं लगती, यह देखते हुए कि आपको 10 में शामिल होने की आवश्यकता है 2,000,000 . में से कार्यक्रम ।

आप बेहतर तरीके से निम्न कोशिश कर सकते हैं:

SELECT object_id, programs.created AS created
FROM   playlist_program_map ppm, programs p, comments_programs cp
WHERE  ppm.playlist_id = 181
       AND p.id = ppm.program_id
       AND p.submitter_id = 32
       AND p.feed_id = 2478
       AND cp.object_id = p.id
       AND cp.text REGEXP 'excellent'

, और इसे तीनों तालिकाओं के लिए दोहराएं।



  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 क्वेरी त्रुटि

  2. दूसरा () उदाहरण – MySQL

  3. MySQL दशमलव फ़ील्ड के लिए सही डिफ़ॉल्ट मान क्या है?

  4. मैसकल कॉलम की बाधा खाली/आवश्यक नहीं है

  5. MySQL:संग्रहीत फ़ंक्शन का उपयोग करके शब्दों को स्ट्रिंग में कैसे क्रमबद्ध करें?