دوره‌ها / MongoDB / Compound Indexes (Compound Indexes)

Compound Indexes (Compound Indexes)

15 دقیقه Article

Compound Indexes: Index های ترکیبی 🔗

Compound Index برای چندین فیلد استفاده می‌شود. این نوع index برای query هایی که روی چند فیلد filter می‌کنند یا sort می‌کنند بسیار مفید است.

ساخت Compound Index:

// Compound index با دو فیلد
db.users.createIndex({ city: 1, age: -1 })

// Compound index با سه فیلد
db.orders.createIndex({ userId: 1, date: -1, status: 1 })

ترتیب فیلدها مهم است:

ترتیب فیلدها در compound index مهم است. Index از چپ به راست استفاده می‌شود:

// Index: { city: 1, age: -1 }

// این query از index استفاده می‌کند (city استفاده شده)
db.users.find({ city: "Tehran" })

// این query هم از index استفاده می‌کند (city و age)
db.users.find({ city: "Tehran", age: { $gte: 18 } })

// این query از index استفاده نمی‌کند (فقط age، city نیست)
db.users.find({ age: { $gte: 18 } })

ESR Rule (Equality, Sort, Range):

برای بهینه‌سازی compound index، فیلدها را به این ترتیب قرار دهید:

  1. Equality: فیلدهایی که با = query می‌شوند
  2. Sort: فیلدهایی که برای sort استفاده می‌شوند
  3. Range: فیلدهایی که با $gt، $lt و ... query می‌شوند
// مثال: Equality, Sort, Range
db.orders.createIndex({ userId: 1, date: -1, amount: 1 })

// Query که از این index استفاده می‌کند
db.orders.find({ userId: ObjectId("...") })
  .sort({ date: -1 })
  .limit(10)
💡 نکته: Compound Index می‌تواند برای query هایی که فقط از فیلدهای اول استفاده می‌کنند هم کار کند (left-prefix rule).
✅ یاد گرفتید: Compound Indexes برای query های چند فیلدی استفاده می‌شوند و ترتیب فیلدها در آن‌ها مهم است!

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تمرین: Compound Index Medium
سوال تمرین

🎯 تمرین: ساخت Compound Index

یک compound index روی name و age بسازید.

پاسخ تمرین
JAVASCRIPT
db.users.createIndex({ name: 1, age: -1 })

// ترتیب مهمه!
// برای query: { name: "Ali" } با sort: { age: -1 }

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.