mongodb-dba-workshop

Compound Indexes

Exercise

0. เตรียมระบบ (ถ้ายังไม่ได้ทำ)

สร้าง mongodb cluster บน mongoDB Atlas และเชื่อมต่อกับ Mongo Cluster

1. ทดสอบ Compound Index

  1. จาก database sample_mflix ให้เลือก movies collection มาใช้ทดสอบ
  2. ในช่อง Query ให้ใส่คำสั่งดังนี้ และกดปุ่ม Find
{
  released: { $gte: ISODate("2000-01-01T00:00:00Z") },
  rated: "G"
}
  1. ตรวจสอบผลลัพธ์ที่ได้ จะเป็นหนังที่มีการเข้าฉายตั้งแต่ปี 2000 ขึ้นไป และเป็นหนังที่เหมาะสำหรับทุกเพศทุกวัย
  2. กดปุ่ม Explain และสังเกตค่าการทำงานต่อไปนี้
    1. Plan
    2. Document examined
    3. Document returned
    4. Execution Time
  3. กดปิดหน้าต่าง explain และกลับมาที่หน้าจอเดิม
  4. กด tab Indexes และสังเกตว่ามี index อะไรบ้าง
  5. กดปุ่ม Create Index และสร้าง index ใหม่ โดยใช้ field released และเลือกเป็น ascending (1)
  6. กลับมาที่ tab documents ให้ทำการเลือก Query ใหม่อีกครั้ง
{
  released: { $gte: ISODate("2000-01-01T00:00:00Z") },
  rated: "G"
}
  1. กดปุ่ม find และตรวจสอบผลลัพธ์ที่ได้
  2. กดปุ่ม Explain และสังเกตค่าการทำงานต่อไปนี้
  3. Plan
  4. Document examined
  5. Document returned
  6. Execution Time
  7. กลับมาที่ tab Indexes ทำการลบ index released ออก
  8. สร้าาง index แบบ Compound ด้วย field released และ rated และเลือกเป็น ascending (1) ตามลำดับ
  9. กลับมาที่ tab documents ให้ทำการเลือก Query ใหม่อีกครั้ง
{
  released: { $gte: ISODate("2000-01-01T00:00:00Z") },
  rated: "G"
}
  1. กดปุ่ม find และตรวจสอบผลลัพธ์ที่ได้
  2. กดปุ่ม Explain และสังเกตค่าการทำงานต่อไปนี้
  3. Plan
  4. Document examined
  5. Document returned
  6. Execution Time

Index Prefixes

ทดสอบการทำงานของ Index Prefixes

  1. จาก database sample_mflix ให้เลือก movies collection มาใช้ทดสอบ
  2. ในช่อง Query ให้ใส่คำสั่งดังนี้ และกดปุ่ม Find
{
  released: { $gte: ISODate("2000-01-01T00:00:00Z") },
}
  1. กดปุ่ม Explain สังเกตว่า MongoDB เรายังใช้ compound index ได้อยู่
  2. กลับมาที่ tab documents ให้ทำการเลือก Query ใหม่อีกครั้ง และกดปุ่ม Find
{
  rated: "G"
}
  1. กดปุ่ม Explain สังเกตว่า MongoDB เราไม่ได้ใช้ compound index แล้ว