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

วิธีปรับปรุงเวลาการรันคำสั่ง Query ใน MongoDB

การสร้างดัชนี (Index) เป็นวิธีหลักในการเพิ่มประสิทธิภาพและลดเวลาการรันคำสั่ง Query ใน MongoDB โดยเฉพาะการสร้าง Unique Index

ตัวอย่างสร้าง Unique Index บนฟิลด์ LastName

> db.demo193.createIndex({"LastName": 1}, {unique: true});
{ "createdCollectionAutomatically": true, "numIndexesBefore": 1, "numIndexesAfter": 2, "ok": 1 }

เพิ่มข้อมูลทดสอบ

> db.demo193.insertOne({"FirstName": "John", "LastName": "Doe"});
{ "acknowledged": true, "insertedId": ObjectId("5e3ade1803d395bdc21346d1") }
> db.demo193.insertOne({"FirstName": "John", "LastName": "Smith"});
{ "acknowledged": true, "insertedId": ObjectId("5e3ade1f03d395bdc21346d2") }
> db.demo193.insertOne({"FirstName": "David", "LastName": "Miller"});
{ "acknowledged": true, "insertedId": ObjectId("5e3ade2803d395bdc21346d3") }

แสดงข้อมูลทั้งหมด

> db.demo193.find();

ผลลัพธ์

{
  "_id": ObjectId("5e3ade1803d395bdc21346d1"),
  "FirstName": "John",
  "LastName": "Doe"
}
{
  "_id": ObjectId("5e3ade1f03d395bdc21346d2"),
  "FirstName": "John",
  "LastName": "Smith"
}
{
  "_id": ObjectId("5e3ade2803d395bdc21346d3"),
  "FirstName": "David",
  "LastName": "Miller"
}

ค้นหาด้วยเงื่อนไข LastName = "Smith" (ใช้ Index)

> db.demo193.find({"LastName": "Smith"});

ผลลัพธ์

{
  "_id": ObjectId("5e3ade1f03d395bdc21346d2"),
  "FirstName": "John",
  "LastName": "Smith"
}

แนวทางปรับปรุงประสิทธิภาพ Query เพิ่มเติม:

  • สร้าง Compound Index สำหรับคิวรีที่มีหลายเงื่อนไข
  • ใช้ explain("executionStats") วิเคราะห์แผนการรันคิวรี
  • หลีกเลี่ยงการใช้ $regex นำหน้าสตริง (leading wildcard)
  • จำกัดฟิลด์ที่คืนค่าด้วย Projection
  • ใช้ hint() บังคับให้ใช้ดัชนีเฉพาะเมื่อจำเป็น