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

MySQL कुशलतापूर्वक सभी रिकॉर्ड को एक टेबल से दूसरी टेबल में कॉपी करता है

बस एक चीज है जो आप याद कर रहे हैं। विशेष रूप से, यदि आप InnoDB का उपयोग कर रहे हैं, तो क्या आप यह सुनिश्चित करने के लिए कि आप प्राथमिक कुंजी (क्लस्टर इंडेक्स) क्रम में पंक्तियाँ सम्मिलित कर रहे हैं, अपने SELECT स्टेटमेंट में स्पष्ट रूप से ORDER BY क्लॉज जोड़ना चाहते हैं:

INSERT INTO product_backup SELECT * FROM product ORDER BY product_id

यदि आवश्यक न हो तो बैकअप टेबल पर सेकेंडरी इंडेक्स को हटाने पर विचार करें। यह सर्वर पर कुछ भार भी बचाएगा।

अंत में, यदि आप InnoDB का उपयोग कर रहे हैं, तो आवश्यक पंक्ति लॉक की संख्या कम करें और दोनों तालिकाओं को स्पष्ट रूप से लॉक करें:

LOCK TABLES product_backup WRITE;
LOCK TABLES product READ;
INSERT INTO product_backup SELECT * FROM product ORDER BY product_id;
UNLOCK TABLES;

लॉकिंग सामग्री शायद एक बड़ा अंतर नहीं करेगी, क्योंकि पंक्ति लॉकिंग बहुत तेज़ है (हालांकि टेबल लॉक जितनी तेज़ नहीं है), लेकिन जब से आपने पूछा था।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं अपने SQL कथन में ANDs और ORs को कैसे जोड़ सकता हूँ?

  2. MySQL में JSON के रूप में डेटा संग्रहीत करना

  3. MySQL दो दिनांक स्वरूप के बीच कनवर्ट करें

  4. Neo4j स्थापना

  5. एक ही डेटा के साथ दो डेटाबेस को कैसे मर्ज करें, लेकिन अलग-अलग पीके के साथ, बिना डुप्लीकेट फ़ील्ड के?