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

रिकॉर्ड को छोड़कर जहां सबक्वेरी परिणाम देता है जो परस्पर अनन्य होने की आवश्यकता होती है

और यह बदसूरत था। यह ठीक काम करता है जब तक कि डीबी पर कोई अन्य महत्वपूर्ण भार न हो, और फिर यह सब बहुत धीरे-धीरे हो जाता है। यह ज्यादातर सर्वर की आईओ सीमाओं के लिए नीचे है, लेकिन आसान तरीका यह था कि मेमोरी टेबल में इफिक्शन और नॉनफिक्शन प्राप्त करें और DELETE स्टेटमेंट इस तरह दिख सकता है:

    DELETE tmp_table FROM tmp_table
         INNER JOIN
         (
            SELECT ASIN, MAX( isFiction ) AS isFiction, MAX( isNonFiction ) AS isNonFiction
            FROM tmp_table
            GROUP BY ASIN
            HAVING isFiction =1
            AND isNonFiction =1
         ) D
         WHERE D.ASIN=tmp_table.ASIN AND tmp_table.isNonFiction=1

परीक्षण में, यह पूरी प्रक्रिया को लगभग 90 सेकंड से 10 सेकंड तक कम कर रहा है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC और MySQL के साथ पंक्तियों को जोड़ने में समस्या?

  2. प्रत्येक अपडेट पर MySQL CURRENT_TIMESTAMP फ़ील्ड अपडेट

  3. वर्चुअलएन्व (पायथन 3.4), पाइप स्थापित mysqlclient त्रुटि

  4. यूनिकोड और संयोजन के संबंध में MySQL हैंडल स्ट्रिंग्स जैसे SQLite कैसे करता है?

  5. मैसकल में ऐरे कहाँ पसंद है?