La oss komme i gang med denne artikkelen ved å åpne skallterminalen til Ubuntu 20.04 raskt. Bruk hurtigtasten “Ctrl+Alt+T” for å gjøre det. Etter den vellykkede lanseringen av Shell -terminalen, må du oppdatere Linux -systemet ditt ved bruk av oppdatering og oppgraderingskommandoer ved hjelp av en APT -pakke. Etter det, åpne SQLite -databasen ved å bruke "Sqlite3" -instruksjonen. Akkurat nå har vi ingen tabeller i databasen så langt, jeg.e. bruker .Tabeller kommando.
For å lage indeksene på uttrykk, trenger vi en tabell i databasen vår. Vi opprettet en ny tabell som heter "Detalj" i vår database som inneholder totalt 3 heltallkolonner, i.e. Id, detaljhandel og salg. Bordet er tomt akkurat nå, jeg.e. I henhold til SELECT -kommandoen.
Lag tabelldetaljer (id int primær nøkkel ikke null, detaljhandel int, salg int);Vi må legge til noen poster i detaljtabellen slik at vi kan lage indeksene på kolonnene etter det. Dermed benyttet vi innsetting av instruksjonen med inn i nøkkelordet etterfulgt av tabellnavnet "Detalj" og kolonnenavn "ID, Retail, Sale". Kolonnenavnene blir fulgt av søkeordverdiene og postene som skal settes inn i kolonnene. Vi satte inn totalt 10 poster innen tre kolonner fra denne tabellen; Hver og en er unik som vist:
Sett inn i detalj (id, detaljhandel, salg) verdier (1, 340, 400);Etter å ha brukt SELECT -instruksjonen med “*” for å vise alle kolonnepostene fra detaljtabellen, viste vi de nylig innsatte 10 postene i tabellen.
Velg * fra detaljer;Før vi lager en indeks på uttrykkene, tar vi en titt på den enkle spørringen for å hente postene med bruk av uttrykk. Vi bruker også rekkefølgen etter alternativ i spørringen for å organisere resultatene i henhold til den synkende rekkefølgen på en lengde på en kolonnebutikk. Totalt 8 poster vises på skjermen vår så langt.
Velg * fra detaljer hvor lengde (detaljhandel)> 2 bestill etter lengde (detaljhandel) desc;Vi bruker den samme spørringen i SQLite Query Planner -instruksjonen for å se hvordan SQLite fungerer for å utføre denne spørringen. Vi fant ut at det må skanne hele tabellen "detalj" ved hjelp av det midlertidige B-treet (balansert tre) på ordren etter klausul.
Forklar spørringsplan velg * fra detaljer hvor lengde (detaljhandel)> 2 bestilling etter lengde (detaljhandel) desc;
La oss lage en indeks på samme uttrykk "lengde" på detaljhandelen i en tabelldetalj. Vi bruker Create Index -instruksjonen for å opprette indeksen “Index_Retail”.
Opprette indeksindeks_retail på detaljer (lengde (detaljhandel));Etter å ha opprettet indeksen på detaljtabellen, brukte vi spørringsplanleggeren for å se arbeidsstrukturen i spørringen. Det viser at spørringen har arbeidet med den ekspresjonsbaserte indeksen for å hente de nødvendige resultatene i stedet for å søke i hele tabellen.
Forklar spørringsplan velg * fra detaljer hvor lengde (detaljhandel)> 2 bestilling etter lengde (detaljhandel) desc;Etter å ha brukt SELECT -instruksjonen om det samme uttrykket for å hente postene, vises nå dataene i den synkende rekkefølgen på lengden på detaljhandelen.
La oss opprette et annet valgt spørsmål med et uttrykk. Denne gangen vil hvor klasseuttrykk bare vise postene der summen av detaljhandels- og salgskolonnen er større enn 700.
Velg * fra detalj der detaljhandel+salg> 700;Vi benyttet den forrige Select -instruksjonen sammen med enkeltkolonnene og uttrykket “Retail+Sale> 700” den inneholder, i spørringsplanleggerens instruksjon. Resultatet av spørringsplanleggeren viser at SQLite -databasen må søke over hele detaljtabellen for å hente de nødvendige resultatene med dette ganske ineffektive uttrykket.
Forklar spørringsplan velg ID, detaljhandel, salg, detaljhandel+salg fra detaljer der detaljhandel+salg> 700;La oss opprette en ny indeks på uttrykket “Retail+Sale” som brukes i forrige utvalgte instruksjon. Så vi benyttet oss. Den nyopplagte indeksen “Index_Detail” kan sees i indekslisten i henhold til “.indekser detalj ”instruksjon.
Opprett indeksindeks_Detail på detaljer (Retail+Sale);La oss nå prøve ut spørringsplanleggerens instruksjon for samme valginstruksjon som inneholder detaljhandel+salg> 700 uttrykk i den som brukes i hvor leddet i SELECT -instruksjonen. Etter å ha brukt Query Planner, fant vi at SQLite -planen bare vil søke i de spesifikke oppføringene til en tabelldetalj i henhold til indeksen “Index_Detail” som inneholder et uttrykk.
Forklar spørringsplan velg ID, detaljhandel, salg, detaljhandel+salg fra detaljer der detaljhandel+salg> 700;La oss endre uttrykket ved å utveksle navnene på kolonnene med hverandre uten å endre kunnskap. Hver gang du bruker samme valg av instruksjon med den lille endringen i uttrykket, i.e. “Salg+detaljhandel> 700”, det viser de samme 5 resultatene siden logikken er riktig og det samme brukes i forrige SELECT -instruksjon.
Velg * fra detaljer der salg+detaljhandel> 700;Etter å ha brukt den tidligere modifiserte Select-instruksjonen i instruksjonen. Dette er fordi vi ikke har opprettet en indeks for det nylig modifiserte uttrykket “Sale+Retail> 700” i SELECT -spørringen.
Forklar spørringsplan velg ID, detaljhandel, salg, salg+detaljhandel fra detaljer hvor salg+detaljhandel> 700;Konklusjon
Denne artikkelen handler om å lage en indeks på forskjellige uttrykk. Vi prøvde å bruke instruksjonen.