ผลของ limit() ต่อความเร็วคิวรี่ใน MongoDB
คำตอบสั้น: ไม่ limit() ไม่ได้เพิ่มความเร็วในการประมวลผลคิวรี่ (Query Speed) แต่ช่วยลดการใช้แบนด์วิดท์ (Bandwidth) และหน่วยความจำในการส่งผลลัพธ์กลับไปยังไคลเอ็นต์
ขั้นตอนที่ 1: สร้าง Collection และเพิ่มข้อมูลตัวอย่าง
สร้าง collection ชื่อ demo197 และเพิ่มเอกสาร 7 รายการ
> db.demo197.insertOne({"Name":"Chris"});
{ "acknowledged": true, "insertedId": ObjectId("5e3afde803d395bdc21346d8") }
> db.demo197.insertOne({"Name":"Bob"});
{ "acknowledged": true, "insertedId": ObjectId("5e3afdef03d395bdc21346d9") }
> db.demo197.insertOne({"Name":"David"});
{ "acknowledged": true, "insertedId": ObjectId("5e3afdf203d395bdc21346da") }
> db.demo197.insertOne({"Name":"Sam"});
{ "acknowledged": true, "insertedId": ObjectId("5e3afdf603d395bdc21346db") }
> db.demo197.insertOne({"Name":"Mike"});
{ "acknowledged": true, "insertedId": ObjectId("5e3afdf903d395bdc21346dc") }
> db.demo197.insertOne({"Name":"Carol"});
{ "acknowledged": true, "insertedId": ObjectId("5e3afe1603d395bdc21346dd") }
> db.demo197.insertOne({"Name":"John"});
{ "acknowledged": true, "insertedId": ObjectId("5e3afe2003d395bdc21346de") }
ขั้นตอนที่ 2: แสดงข้อมูลทั้งหมด
> db.demo197.find();
ผลลัพธ์: แสดงทั้งหมด 7 รายการ
ขั้นตอนที่ 3: ใช้ limit(4) จำกัดจำนวนผลลัพธ์
> db.demo197.find().limit(4);
ผลลัพธ์: แสดงเฉพาะ 4 รายการแรก
{ "_id": ObjectId("5e3afde803d395bdc21346d8"), "Name": "Chris" }
{ "_id": ObjectId("5e3afdef03d395bdc21346d9"), "Name": "Bob" }
{ "_id": ObjectId("5e3afdf203d395bdc21346da"), "Name": "David" }
{ "__id": ObjectId("5e3afdf603d395bdc21346db"), "Name": "Sam" }
สรุป:
limit()จำกัดจำนวนเอกสารที่ส่งกลับ ไม่ได้ทำให้คิวรี่รันเร็วขึ้น- คิวรี่ยังต้องสแกนหาเอกสารตามเงื่อนไข (หรือใช้ดัชนี) ก่อนจะนำมา limit
- ประโยชน์หลัก: ลด Network Traffic, หน่วยความจำ Client, และเวลาในการ Transfer ข้อมูล
- หากต้องการเพิ่มความเร็วคิวรี่จริง ให้ใช้ Index ที่เหมาะสม