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

फाइलसॉर्ट का उपयोग करके MySQL धीमी क्वेरी

नीचे दी गई क्वेरी अस्थायी का उपयोग कर हटा देगी; फाइलसॉर्ट का उपयोग करना। व्याख्या से तो यह बेहतर तरीके से चलना चाहिए..

MySQL ऑप्टिमाइज़र गूंगा है इसलिए ट्रिक यह है कि ऑप्टिमाइज़र को आप चाहते हैं कि आप चाहते हैं और यह एक व्युत्पन्न तालिका है जो College.college_location =1 पर आधारित है। तो आप छात्र तालिका के साथ परिणाम में शामिल हो सकते हैं। और इस तरह MySQL सॉर्ट कुंजी का उपयोग कर सकता है

SELECT 
 *
FROM 
 student
INNER JOIN (
    SELECT 
     college_id
    FROM 
     college
    WHERE
     college.college_location = 1  
  ) college
ON student.student_college = college.college_id
ORDER BY
    student.countup DESC
  , student.updated_time DESC

नए इंडेक्स को कैप्स लॉक में नोट करें

डेमो देखें http://sqlfiddle.com/#!2/05c8a/1

या आप इसका उपयोग कर सकते हैं यदि आपको लगता है कि यह अधिक समझ में आता है या पढ़ने में आसान है। प्रदर्शन समान होना चाहिए क्योंकि व्याख्या ने मुझे समझाया कि यह वही है।

SELECT 
 * 
FROM (
  SELECT 
    college_id
  FROM 
    college
  WHERE
    college.college_location = 1  
) 
  college

INNER JOIN
 student 

ON
 student.student_college = college.college_id

ORDER BY
    student.countup DESC
  , student.updated_time DESC

डेमो देखें http://sqlfiddle.com/#!2/05c8a/23

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

SET @college_ids = NULL; 

SELECT
  GROUP_CONCAT(college_id)
FROM
  college
WHERE
  college_location = 1
GROUP BY
  college_location ASC
INTO @college_ids;

SELECT 
 *
FROM 
 student
WHERE 
 student.student_college IN(@college_ids)
ORDER BY
    student.countup DESC
  , student.updated_time DESC
;

डेमो देखें http://sqlfiddle.com/#!2/454b3/61



  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. डेटाबेस से URL और लिंक टेक्स्ट

  5. धीमी क्वेरी लॉग के शीर्ष के पास MySQL सेट नाम