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

केस स्टेटमेंट के साथ क्वेरी ऑप्टिमाइज़ेशन

case कथन समय जोड़ता है, क्योंकि इसे खोजा जाता है।

समाधान? जोड़े को एक अस्थायी तालिका में संग्रहीत करें। . . एक सूचकांक के साथ। तो:

create temporary table code_pairs (
    old_code varchar(255) not null primary key,
    new_code varchar(255)
);

insert into code_pairs(old_code, new_code)
    values ('akdsfj', 'kadjsf'),
           ('asdf', 'ndgs'),
           . . . ;

फिर update . का उपयोग करें join . के साथ :

update test_table tt join
       code_paris cp
       on tt.code = cp.old_code
    set tt.code = cp.new_code;

यह आपका समय बचाता है क्योंकि मेल खाने वाला कोड इंडेक्स का उपयोग करके पाया जाता है, बल्कि एक-एक करके case के माध्यम से खोजा जाता है बयान। इसके अलावा, उन पंक्तियों पर कोई अपडेट करने का प्रयास नहीं किया गया है जिनका कोई मेल नहीं है। बिना मिलान वाली 170,000 पंक्तियाँ शायद क्वेरी का सबसे धीमा हिस्सा हैं, क्योंकि उन्हें case की पूरी सूची से गुजरना पड़ता है मान।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 15 मील के दायरे के बिना निकटतम lng/lat स्थानों का पता लगाने की विधि?

  2. PHP कोड में MYSQL सेट टाइमज़ोन

  3. MySQL को छवि भेजने के लिए Android एप्लिकेशन

  4. PHP/MySQL टाइमस्टैम्प और टाइमज़ोन

  5. json_encode running चलाने के बाद \r\n (न्यूलाइन कैरेक्टर) को बदलना