हां, MySQL में एक ही INSERT स्टेटमेंट में कई मान सेट प्रदान करके आप एक बार में कई पंक्तियां डाल सकते हैं। यह अलग-अलग INSERT स्टेटमेंट की तुलना में बहुत तेज़ और कुशल है।
सिंटैक्स
INSERT INTO yourTableName (col1, col2, ...) VALUES (val1, val2, ...), (val1, val2, ...), ...;
उदाहरण तालिका बनाना
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value1 INT,
Value2 INT,
Value3 INT
);
एक INSERT में 4 पंक्तियां डालना
mysql> INSERT INTO DemoTable (Value1, Value2, Value3)
-> VALUES (10, 20, 40), (100, 148, 120), (150, 670, 1000), (100000, 200000, 409999);
आउटपुट: Query OK, 4 rows affected (0.17 sec)
परिणाम देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+----+--------+--------+--------+ | Id | Value1 | Value2 | Value3 | +----+--------+--------+--------+ | 1 | 10 | 20 | 40 | | 2 | 100 | 148 | 120 | | 3 | 150 | 670 | 1000 | | 4 | 100000 | 200000 | 409999 | +----+--------+--------+--------+
लाभ:
- प्रदर्शन: नेटवर्क राउंड-ट्रिप कम, पार्सिंग ओवरहेड कम
- परमाणुता: सभी पंक्तियां एक ही ट्रांजैक्शन में डाली जाती हैं
- पठनीयता: कोड अधिक संक्षिप्त होता है
सीमाएं: max_allowed_packet सिस्टम वेरिएबल कुल क्वेरी आकार को सीमित करता है (डिफ़ॉल्ट 4MB/64MB)। बहुत बड़े बैच के लिए, टुकड़ों में विभाजित करें या LOAD DATA INFILE का उपयोग करें।