Compound Indexes (Compound Indexes)
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، فیلدها را به این ترتیب قرار دهید:
- Equality: فیلدهایی که با = query میشوند
- Sort: فیلدهایی که برای sort استفاده میشوند
- 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 }
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.