MySQL में एक ही स्टेटमेंट में एकाधिक पंक्तियाँ इन्सर्ट करने के लिए, INSERT INTO ... SELECT के साथ UNION ALL (या UNION) का उपयोग करें। यह अलग-अलग INSERT स्टेटमेंट से अधिक कुशल है।
सिंटैक्स
INSERT INTO table_name (col1, col2, col3) SELECT val1, val2, val3 UNION ALL SELECT val4, val5, val6 UNION ALL SELECT val7, val8, val9; -- आदि
उदाहरण: 3 छात्र रिकॉर्ड एक साथ इन्सर्ट करना
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1936 (
StudentId INT,
StudentName VARCHAR(20),
StudentCountryName VARCHAR(20)
);
UNION ALL के साथ एक क्वेरी में इन्सर्ट करें:
mysql> INSERT INTO DemoTable1936 (StudentId, StudentName, StudentCountryName) SELECT 1001 AS StudentId, 'Chris' AS StudentName, 'US' AS StudentCountryName UNION ALL SELECT 1002, 'Robert', 'UK' UNION ALL SELECT 1003, 'David', 'AUS';
आउटपुट: Query OK, 3 rows affected
परिणाम:
+-----------+-------------+--------------------+ | StudentId | StudentName | StudentCountryName | +-----------+-------------+--------------------+ | 1001 | Chris | US | | 1002 | Robert | UK | | 1003 | David | AUS | +-----------+-------------+--------------------+
UNION vs UNION ALL
| ऑपरेटर | व्यवहार | प्रदर्शन |
|---|---|---|
| UNION | डुप्लिकेट हटाता है | धीमा (सॉर्ट/यूनिक चेक) |
| UNION ALL | सभी पंक्तियाँ रखता है | तेज़ (कोई डुप्लिकेट चेक नहीं) |
सिफारिश: इन्सर्ट के लिए लगभग हमेशा UNION ALL उपयोग करें जब तक डुप्लिकेट हटाना आवश्यक न हो।
VALUES() सिंटैक्स विकल्प (MySQL 8.0.19+)
INSERT INTO DemoTable1936 (StudentId, StudentName, StudentCountryName)
VALUES
(1001, 'Chris', 'US'),
(1002, 'Robert', 'UK'),
(1003, 'David', 'AUS');
यह अधिक पठनीय और मानक SQL है।
बड़े बैच इन्सर्ट के लिए टिप्स
- बैच आकार: 100-1000 पंक्तियों प्रति स्टेटमेंट बैच करें
- ट्रांजैक्शन: ऑटोकमिट बंद करें, बैच के बाद कमिट करें
- इंडेक्स: बल्क इन्सर्ट के दौरान नॉन-यूनिक इंडेक्स अक्षम करें, बाद में पुनर्निर्माण
- LOAD DATA INFILE: बहुत बड़े डेटासेट (CSV) के लिए सबसे तेज़
सबक्वेरी से इन्सर्ट
INSERT INTO target_table (col1, col2) SELECT col_a, col_b FROM source_table WHERE condition;
UNION ALL के साथ INSERT INTO SELECT छोटे-मध्यम बैच इन्सर्ट के लिए उत्कृष्ट है, विशेष रूप से जब मान डायनामिक हों या अलग स्रोतों से आ रहे हों।