มีโครงการดั้งเดิมที่พัฒนาโดยใช้ ASP และฐานข้อมูล Oracle ใช้รหัสด้านล่างเพื่อรับคำสั่งแบบสอบถาม
ตั้งค่า RS = Server.CreateObject("ADODB.Recordset")
คำสั่ง SQL ที่จะดำเนินการโดย RS.open มีโครงสร้างสองระดับในตรรกะการเชื่อมต่อฐานข้อมูล เมื่อวนซ้ำข้อมูลหลัก ชุดข้อมูลย่อยที่มีอยู่ในข้อมูลหลักแต่ละรายการจะถูกสอบถาม
strSQL = "คำสั่ง SQL เพื่อสอบถามข้อมูลพาเรนต์"
คำสั่ง RS.open SQL ที่จะดำเนินการ การเชื่อมต่อฐานข้อมูล
ทำจนถึง RS.EOF
strSQL2 = "คำสั่ง SQL เพื่อสืบค้นข้อมูลลูก"
คำสั่ง RS2.open SQL ที่จะดำเนินการ การเชื่อมต่อฐานข้อมูล
RS2.ปิด
RS.MoveNext
วนซ้ำ
RS.ปิด
แต่หลังจากเปลี่ยนจากฐานข้อมูล Oracle ไปเป็นฐานข้อมูล SQL Server แล้ว ตรรกะก็ไม่เปลี่ยน แต่เวลาเปลี่ยนไปมาก จากไม่กี่วินาทีดั้งเดิมไปจนถึงมากกว่า 50 วินาที ดูเหมือนว่าเกิดจากการวนซ้ำที่ซ้อนกันของชุดระเบียนสองชุด วิธีแก้ไขคือใช้อาร์เรย์เพื่อเก็บข้อมูลพาเรนต์ จากนั้นดำเนินการ RS.Close จากนั้นวนซ้ำอาร์เรย์เพื่อสืบค้นข้อมูลลูก
ฉันไม่ทราบเหตุผลดีนัก ดังนั้นโปรดให้คำแนะนำฉันบ้าง ขอบคุณ.
http://blog.csdn.net/dutguoyi/archive/2007/03/18/1532924.aspx