MongoDB-এ ক্যোয়ারি ধীর হলে পারফরম্যান্স বাড়াতে ইন্ডেক্স (Index) তৈরি করুন। ইন্ডেক্স ছাড়া MongoDB পুরো কলেকশন স্ক্যান করে (COLLSCAN), যা ধীর।
ইন্ডেক্স তৈরির সিনট্যাক্স
db.yourCollectionName.createIndex({ yourFieldName: 1 });
এখানে 1 = অ্যাসেন্ডিং, -1 = ডেসেন্ডিং।
পদ্ধতি ১: সিম্পল ফিল্ড ইন্ডেক্স (Single Field Index)
> db.takeLessTimeToSearchDemo.createIndex({ "EmployeeName": 1 });
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
ব্যবহার: সমতা (equality), রেঞ্জ, সর্টিং ক্যোয়ারির জন্য।
পদ্ধতি ২: টেক্সট ইন্ডেক্স (Text Index)
> db.takeLessTimeToSearchDemo1.createIndex({ "EmployeeName": "text" });
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
ব্যবহার: ফুল-টেক্সট সার্চ, কেস-ইনসেনসিটিভ, পার্শিয়াল ম্যাচিং। $text অপারেটর দিয়ে ক্যোয়ারি করুন।
পদ্ধতি ৩: হ্যাশড ইন্ডেক্স (Hashed Index)
> db.takeLessTimeToSearchDemo2.createIndex({ "EmployeeName": "hashed" });
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
ব্যবহার: শার্ডিং (sharding) এর জন্য, সমতা ক্যোয়ারির জন্য ভালো, রেঞ্জ ক্যোয়ারির জন্য নয়।
অন্যান্য গুরুত্বপূর্ণ ইন্ডেক্স টাইপ:
- Compound Index:
{ field1: 1, field2: -1 }— একাধিক ফিল্ড একসাথে। - Multikey Index: অ্যারে ফিল্ডের জন্য অটোমেটিক তৈরি হয়।
- Geospatial Index:
2dsphere,2d— লোকেশন বেসড ক্যোয়ারির জন্য। - TTL Index: এক্সপায়ার হওয়া ডেটা অটো ডিলিট করার জন্য।
ইন্ডেক্স যাচাই করা
> db.yourCollectionName.getIndexes();
ক্যোয়ারি প্ল্যান দেখা (Explain)
> db.yourCollectionName.find({ EmployeeName: "John" }).explain("executionStats");
খুঁজুন: "stage": "IXSCAN" (ইন্ডেক্স স্ক্যান) বনাম "stage": "COLLSCAN" (কলেকশন স্ক্যান)।
সতর্কতা: ইন্ডেক্স লেখার গতি কমায়, স্টোরেজ বেড়ায়। শুধু প্রয়োজনীয় ফিল্ডে ইন্ডেক্স দিন।