ฉันมีบันทึกจำนวน 1 รายการที่ต้องป้อนลงในตาราง วิธีที่ดีที่สุดในการทำแบบสอบถามคืออะไร? ฉันควรทำวนรอบและแทรกหนึ่งระเบียนต่อการวนซ้ำหรือไม่ หรือมีวิธีที่ดีกว่า
ฉันมีบันทึกจำนวน 1 รายการที่ต้องป้อนลงในตาราง วิธีที่ดีที่สุดในการทำแบบสอบถามคืออะไร? ฉันควรทำวนรอบและแทรกหนึ่งระเบียนต่อการวนซ้ำหรือไม่ หรือมีวิธีที่ดีกว่า
คำตอบ:
จากคู่มือ MySQL
คำสั่ง INSERT ที่ใช้ไวยากรณ์ค่าสามารถแทรกหลายแถว ในการทำเช่นนี้ให้รวมรายการคอลัมน์หลายค่าโดยแต่ละรายการจะอยู่ในวงเล็บและคั่นด้วยเครื่องหมายจุลภาค ตัวอย่าง:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
max_allowed_packet
ส่วนใหญ่คุณไม่ได้ทำงานในไคลเอนต์ MySQL และคุณควรแบตช์แทรกเข้าด้วยกันโดยใช้ API ที่เหมาะสม
เช่นใน JDBC:
connection con.setAutoCommit(false);
PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();
prepStmt.setString(1,mgrnum2);
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();
int [] numUpdates=prepStmt.executeBatch();
Insert into table(col1,col2) select col1,col2 from table_2;
โปรดอ้างอิงเอกสาร MySQL ในคำสั่ง INSERT
insert into select from
ประสิทธิภาพ? มันเร็วเท่ากับเม็ดมีดขนาดใหญ่หรือไม่?
โหลดแบบสอบถามข้อมูล infile เป็นตัวเลือกที่ดีกว่ามาก แต่เซิร์ฟเวอร์บางตัวเช่น godaddy จำกัด ตัวเลือกนี้ไว้ในการโฮสต์ที่ใช้ร่วมกันดังนั้นเหลือเพียงสองตัวเลือกจากนั้นหนึ่งบันทึกจะถูกแทรกในทุกการวนซ้ำหรือการแทรกแบทช์ จำนวนตัวละครที่ตั้งค่าใน mysql แล้วแบบสอบถามของคุณจะผิดพลาดดังนั้นฉันขอแนะนำให้ใส่ข้อมูลในชุดข้อมูลด้วยชุดการแทรกซึ่งจะช่วยลดจำนวนการเชื่อมต่อที่สร้างด้วยฐานข้อมูลได้
LOAD DATA LOCAL INFILE '/users/name/txt.file'
mysql อนุญาตให้คุณแทรกหลายแถวในครั้งเดียวด้วยตนเอง INSERT
INSERT
รองรับสิ่งนี้ !