MongoDB Indexare: createIndex() și dropIndex()

⚡ Rezumat inteligent

MongoDB Indexurile stochează un subset ordonat al câmpurilor unei colecții, astfel încât interogările să poată localiza documente fără a scana fiecare înregistrare. Metodele createIndex, getIndex și dropIndex construiesc, listează și elimină aceste structuri critice pentru performanță.

  • 🚀 Scop: Indexurile permit MongoDB săriți peste scanările complete ale colecției pentru citiri mai rapide.
  • 🛠️ creațiIndex: Construiește indexuri cu un singur câmp sau compuse în ordine crescătoare sau descrescătoare.
  • 🔍 obțineIndexuri: Listează fiecare index dintr-o colecție, inclusiv _id-ul implicit.
  • 🗑️ dropIndex: Elimină un index; dropIndexes șterge toate indexurile, cu excepția _id.
  • 🇧🇷 Compensație: Prea mulți indexuri încetinesc inserările, actualizările și ștergerile.
  • 🤖 Reglare AI: Asistenții recomandă și generează automat indexurile corecte.

MongoDB Indexare createIndex dropIndex

Care sunt MongoDB Indici?

Indecșii sunt foarte importanți în orice bază de date, și cu MongoDB Nu este diferit. Cu utilizarea indexurilor, efectuarea de interogări în MongoDB devine mai eficient.

Dacă ați avea o colecție cu mii de documente fără indexuri și apoi ați căuta anumite documente, atunci într-un astfel de caz MongoDB ar trebui să scaneze întreaga colecție pentru a găsi documentele. Dar dacă ai avea indici, MongoDB ar folosi acești indici pentru a limita numărul de documente care trebuiau căutate în colecție.

Indexurile sunt seturi speciale de date care stochează o parte din datele colecției. Deoarece datele sunt parțiale, devine mai ușor de citit. Acest set parțial stochează valoarea unui anumit câmp sau a unui set de câmpuri, ordonate după valoarea câmpului.

Înțelegerea impactului indicilor

Chiar dacă introducerea a arătat că indexurile sunt bune pentru interogări, prea multe indexuri pot încetini alte operațiuni, cum ar fi operațiunile de inserare, ștergere și actualizare.

Dacă există operațiuni frecvente de inserare, ștergere și actualizare a documentelor, atunci indexurile ar trebui să se schimbe des, ceea ce ar reprezenta o suprasarcină pentru colecție.

Exemplul de mai jos arată ce valori de câmp ar putea constitui un index într-o colecție. Un index se poate baza fie pe un singur câmp din colecție, fie pe mai multe câmpuri din colecție.

În exemplul de mai jos, ID-ul angajatului „1” șiCode „AA” sunt folosite pentru indexarea documentelor din colecție. Așadar, atunci când se efectuează o căutare prin interogare, aceste indexuri vor fi utilizate pentru a găsi rapid și eficient documentele necesare în colecție.

Deci, chiar dacă interogarea de căutare se bazează pe AngajatCode „AA”, documentul respectiv ar fi returnat.

Înțelegerea impactului indicilor

Cum se creează indecși: createIndex()

Crearea unui index în MongoDB se realizează prin utilizarea createIndex metodă.

Următorul exemplu arată cum se adaugă un index la o colecție. Să presupunem că avem aceeași colecție Employee, care are numele de câmp „Employeeid” și „EmployeeName”.

Creați indexuri cu createIndex

db.Employee.createIndex({Employeeid:1})

Code Explicaţie:

  1. createIndex metoda este utilizată pentru a crea un index bazat pe „Employeeid” al documentului.
  2. Parametrul „1” indică faptul că, atunci când indexul este creat cu valorile câmpului „Employeeid”, acestea trebuie sortate în ordine crescătoare. Rețineți că acest lucru este diferit de câmpul _id (care identifică în mod unic fiecare document) care MongoDB se creează automat. Documentele vor fi acum sortate în funcție de câmpul Employeeid și nu de câmpul _id.

Dacă comanda este executată cu succes, va fi afișat următorul rezultat:

ieșire:

ieșire createIndex

  1. numIndexesBefore: 1 indică numărul de valori ale câmpurilor din indexuri înainte de rularea comenzii. Fiecare colecție are câmpul _id, care contează și ca valoare a câmpului, deci numIndexesBefore este 1.
  2. numIndexesAfter: 2 indică numărul de valori de câmp din indexuri după executarea comenzii.
  3. Ieșirea „ok: 1” specifică faptul că operația a avut succes și noul index este adăugat la colecție.

Codul de mai sus arată cum se creează un index bazat pe o valoare a unui câmp, dar se poate crea și un index bazat pe mai multe valori de câmp. Următorul exemplu arată cum se poate face acest lucru:

Creați un index compus pe mai multe câmpuri

db.Employee.createIndex({Employeeid:1, EmployeeName:1})

Metoda createIndex ia acum în considerare mai multe valori de câmp, ceea ce va determina crearea indexului pe baza valorilor „Employeeid” și „EmployeeName”. Employeeid:1 și EmployeeName:1 indică faptul că indexul ar trebui creat pe baza acestor două valori de câmp, unde :1 indică ordinea crescătoare. Aceasta este cunoscută sub numele de index compus.

Cum se găsesc indexuri: getIndexes()

Găsirea unui index în MongoDB se realizează prin utilizarea obțineIndexuri metodă. Următorul exemplu arată cum se poate face acest lucru:

Găsiți indexuri cu getIndexes

db.Employee.getIndexes()

Metoda getIndexes este folosită pentru a găsi toți indecșii dintr-o colecție.

Dacă comanda este executată cu succes, va fi afișat următorul rezultat:

ieșire:

ieșire getIndexes

Rezultatul returnează un document care arată că există doi indexuri în colecție: câmpul _id și câmpul Employeeid. :1 indică faptul că valorile câmpurilor din index sunt create în ordine crescătoare.

Cum se elimină indexurile: dropIndex()

Eliminarea unui index în MongoDB se realizează prin utilizarea dropIndex metodă. Următorul exemplu arată cum se poate face acest lucru:

Indexuri eliminate cu dropIndex

db.Employee.dropIndex({Employeeid:1})

Metoda dropIndex preia valorile câmpurilor obligatorii care trebuie eliminate din index.

Dacă comanda este executată cu succes, va fi afișat următorul rezultat:

ieșire:

ieșire dropIndex

  1. Valoarea nIndexesWas: 3 indică numărul de valori ale câmpurilor din indexuri înainte de rularea comenzii. Fiecare colecție are câmpul _id, care contează și ca valoare a câmpului.
  2. Ieșirea ok: 1 specifică că operația a avut succes, iar câmpul „Employeeid” este eliminat din index.

Pentru a elimina toți indexurile dintr-o dată din colecție, se poate utiliza comanda dropIndexes. Următorul exemplu arată cum se poate face acest lucru:

Eliminați toți indexurile cu dropIndexes

db.Employee.dropIndexes()

Metoda dropIndexes va elimina toți indecșii, cu excepția indexului _id.

Dacă comanda este executată cu succes, va fi afișat următorul rezultat:

ieșire:

ieșire dropIndexes

  1. nIndexesWas: 2 indică numărul de valori de câmp din indexuri înainte de rularea comenzii.
  2. Fiecare colecție are câmpul _id, care contează și ca valoare a câmpului și nu va fi eliminat de MongoDB; asta indică acest mesaj.
  3. Ieșirea ok: 1 specifică că operația a avut succes.

Întrebări frecvente

Un index cu un singur câmp sortează un singur câmp și este potrivit pentru interogările care filtrează doar pe baza acelui câmp. Un index compus acoperă mai multe câmpuri într-o singură structură și este potrivit pentru interogările care filtrează sau sortează pe baza acestor câmpuri împreună. Indexurile compuse acceptă până la 32 de câmpuri.

Câmpul _id este MongoDBcheia primară a lui, astfel încât fiecare colecție primește automat un index _id unic. Acesta nu poate fi eliminat. De aceea, numIndexesBefore începe de la 1 chiar înainte de a adăuga orice index personalizat.

Executați interogarea cu .explain(„executionStats”). În planul câștigător, o etapă IXSCAN înseamnă că a fost utilizat un index, în timp ce o etapă COLLSCAN înseamnă MongoDB am scanat fiecare document și un nou index ar putea ajuta.

Folosește etapa de agregare $indexStats pentru a vedea cât de des este accesat fiecare index. Indexurile cu utilizare foarte redusă consumă mult spațiu pe disc și au scrieri lente, așa că elimină-le cu dropIndex pentru a menține colecția simplificată.

Instrumentele de inteligență artificială analizează jurnalele de interogări lente și sugerează ce câmpuri să fie indexate. MongoDBConsultantul de performanță al [numărului de produs] clasifică recomandările indexului în funcție de impact, ajutăping Adăugați indici cu valoare mare și îi omiteți pe cei redundanți.

Da. Asistenții AI Copilot transformă cererile din limba engleză simplă în sintaxa corectă createIndex, inclusiv chei ascendente sau descendente și ordinea compusă a câmpurilor, apoi explică indexul rezultat.

ESR este prescurtarea de la Egalitate, Sortare, Interval. Când construiți un index compus, plasați mai întâi câmpurile de potrivire a egalității, apoi câmpurile de sortare, apoi filtrele de interval. Această ordine permite MongoDB utilizați indexul cât mai eficient.

O interogare acoperită primește răspuns în întregime dintr-un index, fără a citi documentele. Când fiecare câmp din filtru și proiecție se află într-un singur index, MongoDB returnează rezultate mai rapid.

Rezumați această postare cu: