MySQL-এ একই INSERT স্টেটমেন্টে একাধিক রো ইনসার্ট করা যায়, যা পারফরম্যান্সে দ্রুত এবং কোড সংক্ষিপ্ত করে।
সিনট্যাক্স
insert into yourTableName(col1,col2) values(val1,val2),(val1,val2),...N;
উদাহরণ: টেবিল তৈরি এবং একসাথে ৫টি রো ইনসার্ট
mysql> create table DemoTable811(
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(100),
StudentAge int
);
Query OK, 0 rows affected (0.54 sec)
mysql> insert into DemoTable811(StudentName,StudentAge) values('Chris',21),('Robert',22),('David',20),('Bob',19),('Carol',23);
Query OK, 5 rows affected (0.14 sec)
Records: 5 Duplicates: 0 Warnings: 0
সকল রেকর্ড দেখানো
mysql> select * from DemoTable811;
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 1 | Chris | 21 | | 2 | Robert | 22 | | 3 | David | 20 | | 4 | Bob | 19 | | 5 | Carol | 23 | +-----------+-------------+------------+ 5 rows in set (0.00 sec)
লाभ
- দ্রুত: একক নেটওয়ার্ক রাউন্ড-ট্রিপ, কম লগিং ওভারহেড
- এটমিক: সব রো ইনসার্ট হয় না হলে কোনোটিই হয় না (ট্রানজ্যাকশনের মতো)
- স্বচ্ছ: কোড পঠনযোগ্য এবং রক্ষণাবেক্ষণ সহজ
সীমাবদ্ধতা
max_allowed_packetসাইজের বেশি বড় ইনসার্ট হয় না (ডিফল্ট ৬৪MB)- খুব বড় ব্যাচের জন্য চাঙ্কে ভাগ করে ইনসার্ট করুন (যেমন ১০০০ রো প্রতি ব্যাচ)
টিপ: INSERT IGNORE বা ON DUPLICATE KEY UPDATE দিয়ে ডুপ্লিকেট হ্যান্ডলিংও করা যায়।