Indeksid
DocStore indeksid asuvad kogumi kõrval kataloogis .storh/indexes. Need on tavalised failid, mis tuletatakse täielikult kirjetest ja mida saab igal ajal uuesti luua. Määra need sujuva liidese või skeemi kaudu:
$docs->indexes()
->field('slug')->unique()
->field('kind')
->field('publishedAt')->range()
->sync();
Indeksitüübid:
- võrdsusindeksid väljadele nagu
kindvõistatus: iga eri väärtuse jaoks on oma fail, nii et üksikpäring loeb ainult vastava väärtuse faili - unikaalsusindeksid väljadele nagu
slug: unikaalsust kontrollitakse kirjutamise ajal; korduv väärtus põhjustabput()tõrke enne kirjutamist - vahemikuindeksid skalaarväärtustele: hõreda otsimisindeksiga sorteeritud fail, mis teenindab
gt,gte,lt,lte,betweenjaprefix
Vahemikuindeksid saavad samal väljal vastata ka päringule orderBy, kasutades limit järjestust otse indeksist, kasvavalt või kahanevalt, ilma kogu tulemusi mällu laadimata ja sortimata.
Kui päring ühendab kaks eq tingimust mitteunikaalsetel võrdsusindekseeritud väljadel, saab storh kasutada selle väljapaari jaoks automaatset liitindeksi ämbrit. Nii jäävad kahe välja valikulised filtrid kiireks, ilma et peaksid lisaks indeksit deklareerima.
Kooskõla ja parandamine
Kirjutamisel uuendatakse indeksikirjeid pärast kirjefaili aatomilist asendamist kogumi kirjutusluku all, nii et kirjed ja indeksid liiguvad koos. verify() võrdleb iga indeksit kirjete täieliku läbivaatusega ja teatab lahknevustest; reindex() loob kõik seadistatud indeksid kirjefailide põhjal uuesti; repair() paigutab rikutud kirjed karantiini ja loob seejärel indeksid uuesti.
$docs->reindex();
$plan = $docs
->query()
->where('slug')->eq('home')
->explain();
explain() tagastab index_scan, kui päringuplaanur saab kasutada seadistatud indeksit, ja vastasel juhul full_scan.