MongoDB Indekseerimine: createIndex() ja dropIndex()

โšก Nutikas kokkuvรตte

MongoDB Indeksid salvestavad kollektsiooni vรคljade jรคrjestatud alamhulga, et pรคringud saaksid dokumente leida ilma iga kirjet skannimata. Meetodid createIndex, getIndexes ja dropIndex loovad, loetlevad ja eemaldavad need jรตudluskriitilised struktuurid.

  • ๐Ÿš€ Eesmรคrk: Indeksid lasevad MongoDB Kiiremate lugemiste jaoks jรคtke kogu kollektsiooni skaneeringud vahele.
  • ๐Ÿ› ๏ธ createIndex: Loob รผhevรคlja- vรตi liitindekseid kasvavas vรตi kahanevas jรคrjekorras.
  • ๐Ÿ” getIndexes: Loetleb kรตik kollektsiooni indeksid, sealhulgas vaikimisi _id.
  • ๐Ÿ—‘๏ธ dropIndex: Eemaldab รผhe indeksi; dropIndexs tรผhjendab kรตik peale _id.
  • ๐Ÿ‡ง๐Ÿ‡ท Kompromiss: Liiga palju indekseid aeglustab lisamist, vรคrskendamist ja kustutamist.
  • ๐Ÿค– Tehisintellekti hรครคlestamine: Assistendid soovitavad ja genereerivad automaatselt รตiged indeksid.

MongoDB Indekseerimine createIndex dropIndex

Mis on MongoDB Indeksid?

Indeksid on vรคga olulised igas andmebaasis ja koos MongoDB see pole teisiti. Indeksite abil pรคringute tegemine MongoDB muutub tรตhusamaks.

Kui teil on tuhandete dokumentidega kogu, millel pole indekseid, ja seejรคrel otsite teatud dokumente, siis sellisel juhul MongoDB peaks dokumentide leidmiseks skannima kogu kollektsiooni. Aga kui teil oleks indeksid, MongoDB kasutaks neid indekseid kogust otsitavate dokumentide arvu piiramiseks.

Indeksid on spetsiaalsed andmekogumid, mis salvestavad osa kogumi andmetest. Kuna andmed on osalised, on neid lihtsam lugeda. See osakogum salvestab konkreetse vรคlja vรตi vรคljade komplekti vรครคrtuse, mis on jรคrjestatud vรคlja vรครคrtuse jรคrgi.

Indekside mรตju mรตistmine

Kuigi sissejuhatuses on nรคidatud, et indeksid sobivad pรคringute jaoks hรคsti, vรตib liiga paljude indeksite olemasolu aeglustada teisi toiminguid, nรคiteks lisamis-, kustutamis- ja vรคrskendamistoiminguid.

Kui dokumentidega tehakse sageli lisamis-, kustutamis- ja vรคrskendamistoiminguid, peaksid indeksid sama tihti muutuma, mis oleks kogumile lihtsalt lisakoormus.

Allolev nรคide demonstreerib, millised vรคljavรครคrtused vรตivad moodustada kollektsiooni indeksi. Indeks vรตib pรตhineda kas ainult รผhel kollektsiooni vรคljal vรตi mitmel kollektsiooni vรคljal.

Allolevas nรคites on tรถรถtaja ID โ€ž1โ€œ ja tรถรถtajaCode โ€žAAโ€ indekseid kasutatakse kollektsiooni dokumentide indekseerimiseks. Seega, kui tehakse pรคringotsing, kasutatakse neid indekseid vajalike dokumentide kiireks ja tรตhusaks leidmiseks kollektsioonist.

Seega isegi kui otsingupรคring pรตhineb tรถรถtajalCode โ€žAAโ€œ, see dokument tagastatakse.

Indekside mรตju mรตistmine

Kuidas indekseid luua: createIndex()

Indeksi loomine MongoDB tehakse kasutades looIndeks meetod.

Jรคrgnev nรคide demonstreerib, kuidas lisada indeks kollektsioonile. Oletame, et meil on sama Employee kollektsioon, mille vรคljanimed on โ€žEmployeeidโ€ ja โ€žEmployeeNameโ€.

Indeksite loomine funktsiooniga createIndex

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

Code Selgitus:

  1. . looIndeks meetodit kasutatakse indeksi loomiseks dokumendi โ€žTรถรถtajaโ€œ alusel.
  2. Parameeter โ€ž1โ€œ nรคitab, et kui indeks luuakse vรคlja โ€žTรถรถtaja idโ€œ vรครคrtustega, tuleks need sorteerida kasvavas jรคrjekorras. Pange tรคhele, et see erineb vรคljast _id (mis identifitseerib iga dokumendi unikaalselt), mis MongoDB loob automaatselt. Dokumendid sorteeritakse nรผรผd tรถรถtaja ID, mitte _id vรคlja jรคrgi.

Kui kรคsk tรคidetakse edukalt, kuvatakse jรคrgmine vรคljund:

Vรคljund:

createIndexi vรคljund

  1. โ€žnumIndexesBefore: 1โ€ nรคitab indeksites olevate vรคljavรครคrtuste arvu enne kรคsu kรคivitamist. Igal kollektsioonil on vรคli โ€ž_idโ€, mis loetakse samuti vรคljavรครคrtuseks, seega on โ€žnumIndexesBeforeโ€ 1.
  2. numIndexesAfter: 2 nรคitab vรคljavรครคrtuste arvu indeksites pรคrast kรคsu kรคivitamist.
  3. Vรคljund โ€žok: 1โ€ nรคitab, et toiming oli edukas ja uus indeks lisatakse kollektsioonile.

รœlaltoodud kood nรคitab, kuidas luua indeks รผhe vรคljavรครคrtuse pรตhjal, aga indeksi saab luua ka mitme vรคljavรครคrtuse pรตhjal. Jรคrgmine nรคide nรคitab, kuidas seda teha:

Loo liitindeks mitmele vรคljale

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

Meetod createIndex vรตtab nรผรผd arvesse mitut vรคljavรครคrtust, mille tulemusel luuakse indeks โ€žEmployeeIDโ€ ja โ€žEmployeeNameโ€ pรตhjal. Employeeid:1 ja EmployeeName:1 nรคitavad, et indeks tuleks luua nende kahe vรคljavรครคrtuse pรตhjal, kus :1 nรคitab kasvavat jรคrjekorda. Seda nimetatakse liitindeksiks.

Kuidas leida indekseid: getIndexes()

Indeksi leidmine MongoDB tehakse kasutades getIndexes meetod. Jรคrgmine nรคide nรคitab, kuidas seda teha saab:

Indeksite leidmine funktsiooniga getIndexes

db.Employee.getIndexes()

Kogust kรตigi indeksite leidmiseks kasutatakse meetodit getIndexes.

Kui kรคsk tรคidetakse edukalt, kuvatakse jรคrgmine vรคljund:

Vรคljund:

getIndexes vรคljund

Vรคljund tagastab dokumendi, mis nรคitab, et kollektsioonis on kaks indeksit: vรคli _id ja vรคli Employeeid. :1 nรคitab, et indeksi vรคljavรครคrtused luuakse kasvavas jรคrjekorras.

Indeksite eemaldamine: dropIndex()

Indeksi eemaldamine MongoDB tehakse kasutades tilkindeks meetod. Jรคrgmine nรคide nรคitab, kuidas seda teha saab:

Indeksite eemaldamine dropIndexiga

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

dropIndex meetod vรตtab vajalikud vรคljavรครคrtused, mis tuleb indeksist eemaldada.

Kui kรคsk tรคidetakse edukalt, kuvatakse jรคrgmine vรคljund:

Vรคljund:

dropIndexi vรคljund

  1. nIndexesWas: 3 nรคitab indeksites olevate vรคljavรครคrtuste arvu enne kรคsu kรคivitamist. Igal kollektsioonil on vรคli _id, mis loetakse samuti vรคljavรครคrtuseks.
  2. Vรคljund ok: 1 tรคpsustab, et toiming oli edukas ja vรคli "Tรถรถtaja tunnustus" eemaldatakse registrist.

Kรตikide indeksite korraga eemaldamiseks kollektsioonist saab kasutada kรคsku dropIndexes. Jรคrgmine nรคide demonstreerib, kuidas seda teha:

Kustuta kรตik indeksid kรคsuga dropIndexs

db.Employee.dropIndexes()

Meetod dropIndexes tรผhistab kรตik indeksid, vรคlja arvatud indeks _id.

Kui kรคsk tรคidetakse edukalt, kuvatakse jรคrgmine vรคljund:

Vรคljund:

dropIndexes vรคljund

  1. nIndexesWas: 2 nรคitab indeksites olevate vรคljavรครคrtuste arvu enne kรคsu kรคivitamist.
  2. Igal kollektsioonil on vรคli _id, mis loetakse samuti vรคljavรครคrtuseks ja mida ei eemaldata MongoDB; seda see sรตnum nรคitabki.
  3. Ok: 1 vรคljund nรคitab, et toiming รตnnestus.

KKK

รœhevรคljaindeks sorteerib รผhe vรคlja ja sobib pรคringutele, mis filtreerivad ainult selle vรคlja alusel. Liitindeks hรตlmab mitut vรคlja รผhes struktuuris ja sobib pรคringutele, mis filtreerivad vรตi sorteerivad neid vรคlju koos. Liitindeksid toetavad kuni 32 vรคlja.

_id vรคli on MongoDBprimaarvรตti, seega saab iga kollektsioon automaatselt unikaalse _id indeksi. Seda ei saa eemaldada. Seetรตttu algab numIndexesBefore vรครคrtusest 1 isegi enne mis tahes kohandatud indeksi lisamist.

Kรคivita pรคring funktsiooniga .explain(โ€œexecutionStatsโ€). Vรตiduplaanis tรคhendab IXSCAN-etapp indeksi kasutamist, COLLSCAN-etapp aga MongoDB skannida iga dokumenti ja uus register vรตib aidata.

Kasutage $indexStats koondamise etappi, et nรคha, kui tihti igale indeksile juurde pรครคsetakse. Vรคga vรคhese kasutusega indeksid raiskavad ketast ja on aeglase kirjutamisega, seega eemaldage need dropIndexiga, et hoida kogum minimaalsena.

Tehisintellekti tรถรถriistad analรผรผsivad aeglaseid pรคringulogisid ja soovitavad, milliseid vรคlju indekseerida. MongoDBPerformance Advisor jรคrjestab indeksi soovitusi mรตju jรคrgi, helping lisate suure vรครคrtusega indeksid ja jรคtate รผleliigsed vahele.

Jah. AI Copiloti assistendid muudavad lihtsad inglise keele pรคringud korrektseks createIndexi sรผntaksiks, mis sisaldab kasvavaid vรตi kahanevaid vรตtmeid ja liitvรคljade jรคrjekorda, ning seejรคrel selgitavad saadud indeksit.

ESR on lรผhend sรตnadest Equation (vรตrdsus), Sort (sorteeri), Range (vahemik). Liitindeksi loomisel aseta esmalt vรตrdsuse vastavuse vรคljad, seejรคrel sortimisvรคljad ja lรตpuks vahemiku filtrid. See jรคrjestus vรตimaldab MongoDB Kasutage indeksit kรตige tรตhusamalt.

Kaetud pรคringule vastatakse tรคielikult indeksist, ilma dokumente lugemata. Kui iga filtri ja projektsiooni vรคli asub รผhes indeksis, MongoDB annab tulemusi kiiremini.

Vรตta see postitus kokku jรคrgmiselt: