یکی از روش های نوشتن ایندکس ها، نوشتن ایندکس های partial (به معنی «قسمتی» یا «جزئی») است. مثلا در پایگاه داده ی ما افراد 20 ساله و 30 ساله و پیر تر وجود دارند. حالا فرض کنید که برنامه ای داریم و کار این برنامه مشخص کردن سن افراد در زمان بازنشستگی است. در چنین حالتی معمولا به دنبال افراد بالای 60 سال می گردیم. به همین خاطر تنظیم index روی فیلد dob.age کار عاقلانه ای است چرا که ما فقط قسمت کوچکی از پایگاه داده را می خواهیم اما مشکل اینجاست که با این کار داده های زیادی را روی index خود خواهیم داشت که اصلا کوئری نمی خورند (به دنبالشان نمی گردیم). اگر فیلد age را index کنیم، تمام سن ها index می شوند (از 20 سال تا 60 سال و بالاتر) اما ما در برنامه ی فرضی خودمان فقط به دنبال افراد بالای 60 سال خواهیم بود و تمام داده های دیگر در لیست ایندکس بلا استفاده باقی خواهند ماند. این مسئله از نظر سرعت برنامه ی ما را درگیر نمی کند و index شما و کوئری هایتان پرسرعت و بهینه خواهند بود اما از نظر فضا، لیست ایندکس بزرگ تر از حد نیاز خواهد بود و فضای سرور را اشغال می کند. همچنین برخی دیگر از کوئری ها مانند insert باید با هر بار وارد کردن داده ی جدید، لیست index را نیز مرتب کنند بنابراین هر چه لیست ایندکس بزرگ تر باشد، ممکن است کوئری های دیگر کُند تر شوند. بنابراین زمانی که می دانید از قسمتی از داده های یک فیلد آنچنان استفاده ای نخواهید داشت و اگر هم استفاده ای باشد با collection scan مشکلی ندارید، می توانید از قابلیت partial indexes یا ایندکس های جزئی استفاده کنید. در این نوع از ایندکس ها به جای اینکه کل یک فیلد را درون لیست ایندکس ها بگذاریم، قسمتی از آن را index می کنیم. بنابراین می توانیم مثالی که گفتم را پیاده سازی کنیم. در قدم اول نگاهی به index های contacts می اندازیم:
پنل نویسندگان
