কেন সূচক
দুটি মূল বিষয় বুঝতে হবে।
- কোনও সূচকের চেয়ে কোনও সূচকের চেয়ে ভাল, সঠিক সূচকটি যে কোনওটির চেয়ে অনেক ভাল।
- মঙ্গোডিবি কেবলমাত্র ক্যোয়ারী অনুসারে একটি সূচক ব্যবহার করবে, আপনি সম্ভবত যা ব্যবহার করতে চান তার যথাযথ ক্ষেত্রের ক্রম দিয়ে যৌগিক সূচক তৈরি করবে।
সূচকগুলি নিখরচায় নয়। সন্নিবেশ, আপডেট এবং মুছে ফেলার সময় তারা মেমরি নেয় এবং একটি পারফরম্যান্স জরিমানা চাপায়। সাধারণত পারফরম্যান্স হিটটি নগন্য (বিশেষত পড়ার পারফরম্যান্সের লাভের তুলনায়), তবে এর অর্থ এই নয় যে আমরা আমাদের সূচকগুলি তৈরি করতে স্মার্ট হতে পারি না।
সূচকগুলি কীভাবে
কোন গ্রুপের ক্ষেত্রকে একত্রে সূচিত করা উচিত তা নির্ধারণ করা আপনার চালানো প্রশ্নগুলি বোঝার বিষয়। আপনার সূচক তৈরি করতে ব্যবহৃত ক্ষেত্রগুলির ক্রমটি গুরুত্বপূর্ণ। সুসংবাদটি হ'ল, যদি আপনি আদেশটি ভুল পেয়ে থাকেন তবে সূচকটি মোটেই ব্যবহার করা হবে না, সুতরাং ব্যাখ্যা দিয়ে স্পট করা সহজ হবে।
কেন বাছাই করা হচ্ছে
আপনার প্রশ্নের জন্য বাছাই করতে পারে। তবে বাছাই করা একটি ব্যয়বহুল ক্রিয়াকলাপ হতে পারে, সুতরাং আপনি যে ক্ষেত্রগুলি অনুসন্ধান করছেন এমন ক্ষেত্রের মতো আপনি বাছাই করা ক্ষেত্রগুলির সাথে চিকিৎসা করা গুরুত্বপূর্ণ। সুতরাং এটির সূচক থাকলে এটি আরও দ্রুত হবে। তবে একটি গুরুত্বপূর্ণ পার্থক্য রয়েছে, আপনি যে ক্ষেত্রটি বাছাই করছেন তা অবশ্যই আপনার সূচকের শেষ ক্ষেত্র। এই নিয়মের একমাত্র ব্যতিক্রম যদি ক্ষেত্রটিও আপনার ক্যোয়ারির অংশ হয় তবে অবশ্যই সর্বশেষ-বিধি-বিধি প্রয়োগ করা হবে না।
বাছাই কিভাবে
আপনি সূচকের সমস্ত কী বা একটি উপসেটে বাছাই নির্দিষ্ট করতে পারেন; যাইহোক, বাছাই কীগুলি সূচীতে প্রদর্শিত হবে একই ক্রমে তালিকাবদ্ধ থাকতে হবে। উদাহরণস্বরূপ, একটি সূচি কী প্যাটার্ন {a: 1, b: 1 a একটি ধরণের সমর্থন করতে পারে {a: 1, b: 1} তবে {b: 1, a: 1 on এ নয়}
বাছাইয়ের জন্য অবশ্যই তার সমস্ত কীগুলির জন্য সূচক কী প্যাটার্ন হিসাবে একই সাজানোর দিকনির্দেশ (যেমন আরোহী / উতরাই) নির্দিষ্ট করতে হবে বা তার সমস্ত কীগুলির জন্য সূচক কী প্যাটার্ন হিসাবে বিপরীত সাজানোর দিকটি নির্দিষ্ট করতে হবে। উদাহরণস্বরূপ, একটি সূচি কী প্যাটার্ন {a: 1, b: 1 a একটি ধরণের সমর্থন করতে পারে {a: 1, b: 1} এবং {a: -1, b: -1} তবে {a: -1 এ নয় , বি: 1}
মনে করুন এই সূচকগুলি রয়েছে:
{ a: 1 }
{ a: 1, b: 1 }
{ a: 1, b: 1, c: 1 }
Example Index Used
db.data.find().sort( { a: 1 } ) { a: 1 }
db.data.find().sort( { a: -1 } ) { a: 1 }
db.data.find().sort( { a: 1, b: 1 } ) { a: 1, b: 1 }
db.data.find().sort( { a: -1, b: -1 } ) { a: 1, b: 1 }
db.data.find().sort( { a: 1, b: 1, c: 1 } ) { a: 1, b: 1, c: 1 }
db.data.find( { a: { $gt: 4 } } ).sort( { a: 1, b: 1 } ) { a: 1, b: 1 }
1, 3, 2, 6, 5, 4, 7
?