พอดีมีโอกาสได้ลองทดสอบกับข้อมูล ด้วยการใช้ Recordset.Addnew กับการ Connection.Execute คำสั่ง Insert ธรรมดา ผลปรากฎว่า
- ถ้าข้อมูลน้อย ๆ ไม่เกิน 50,000 rows ใช้งาน Addnew ก็สะดวกดี เพราะมันช่วยจัดการเรื่อง datatype ให้อัตโนมัติ แต่พอเกินจากนั้น ประสิทธิภาพมันจัดว่าเลวร้ายมาก
- ถ้าใช้คำสั่ง Insert ธรรมดาให้ได้ผลลัพธ์เดียวกัน ไม่ว่าจะกี่ rows ก็ใช้เวลาเท่าเดิมเสมอ สรุปคือ มันไม่มี overhead ในการจัดการข้อมูลใน Recordset
- ถ้าเทียบประสิทธิภาพ ที่ 300000 rows ต่างกันเกือบ 7 เท่าตัว (ถือว่าเลวร้ายมาก)
ตารางที่ใช้ทดสอบก็มี Primary Key แค่ 1 column + 1 Index column
ใช้ Recordset.Addnew ผลที่ได้ตอน 1000*300 rows คือ 6 วินาที |
ใช้คำสั่ง SQL ธรรมดา ที่จำนวนแถวเท่ากัน ใช้เวลาน้อยมาก และสม่ำเสมอ ไม่มี overhead |
สรุปว่า ถ้าข้อมูลน้อย ๆ ก็ใช้ ๆ ไปเถอะ .Addnew แต่ถ้ามันเหยียบหมื่นเหยียบแสนให้คิดดูใหม่ให้ดี ๆ เพราะยิ่งใช้ไปยิ่งช้า (เฮ้อ)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น