MySQL मल्टी-रो INSERT: एक स्टेटमेंट में कई पंक्तियां डालना
MySQL INSERT INTO ... VALUES (...), (...), ... सिंटैक्स का समर्थन करता है जिससे एक ही INSERT स्टेटमेंट में कई पंक्तियां डाली जा सकती हैं। यह अलग-अलग INSERT स्टेटमेंट से बहुत तेज है।
उदाहरण: 5 ग्राहक रिकॉर्ड एक साथ डालें
टेबल बनाएं:
CREATE TABLE DemoTable (
ClientId INT,
ClientName VARCHAR(50)
);
एक INSERT में कई पंक्तियां
INSERT INTO DemoTable VALUES (101, 'Adam'), (102, 'Chris'), (103, 'Robert'), (104, 'Sam'), (105, 'Mike');
परिणाम:
Query OK, 5 rows affected (0.16 sec) Records: 5 Duplicates: 0 Warnings: 0
डेटा जांचें
SELECT * FROM DemoTable;
+----------+------------+ | ClientId | ClientName | +----------+------------+ | 101 | Adam | | 102 | Chris | | 103 | Robert | | 104 | Sam | | 105 | Mike | +----------+------------+
लाभ
- प्रदर्शन: एक पार्स, एक ऑप्टिमाइज़, एक नेटवर्क राउंड-ट्रिप
- परमाणुता: सभी या कुछ नहीं (यदि ट्रांजैक्शनल टेबल)
- बाइनरी लॉग: एक इवेंट के रूप में लॉग होता है
बड़े बैच के लिए विचार
max_allowed_packetसीमा (डिफॉल्ट 4MB/64MB) — बहुत बड़े बैच विफल हो सकते हैं- बैच आकार: 100-1000 पंक्तियां प्रति INSERT अच्छा संतुलन
- बहुत बड़े आयात के लिए
LOAD DATA INFILEसबसे तेज
INSERT ... SELECT से तुलना
INSERT INTO DemoTable (ClientId, ClientName) VALUES (101, 'Adam'), (102, 'Chris') ON DUPLICATE KEY UPDATE ClientName = VALUES(ClientName);