Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

limit() ใน MongoDB ช่วยเพิ่มความเร็วคิวรี่หรือไม่?

ผลของ 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 ที่เหมาะสม